summaryrefslogtreecommitdiffstats
path: root/platform/windows/display_server_windows.cpp
diff options
context:
space:
mode:
author398utubzyt <398utubzyt@gmail.com>2024-03-05 10:16:15 -0800
committer398utubzyt <398utubzyt@gmail.com>2024-03-05 10:31:32 -0800
commit1c10f577cb608fcfbdc98678dade5126aeb7573e (patch)
treeebd0ecd9d778b33ee81c460de4c32eb0435023bf /platform/windows/display_server_windows.cpp
parent39f90600bc553f2273e72708eb2a8d37a8517e86 (diff)
downloadredot-engine-1c10f577cb608fcfbdc98678dade5126aeb7573e.tar.gz
Windows: Fix `FreeLibrary` not always being called in `dialog_show`
Diffstat (limited to 'platform/windows/display_server_windows.cpp')
-rw-r--r--platform/windows/display_server_windows.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index ada9202207..99b18759f3 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -2531,17 +2531,15 @@ Error DisplayServerWindows::dialog_show(String p_title, String p_description, Ve
config.pButtons = tbuttons;
config.pfCallback = win32_task_dialog_callback;
+ Error result = FAILED;
HMODULE comctl = LoadLibraryW(L"comctl32.dll");
if (comctl) {
typedef HRESULT(WINAPI * TaskDialogIndirectPtr)(const TASKDIALOGCONFIG *pTaskConfig, int *pnButton, int *pnRadioButton, BOOL *pfVerificationFlagChecked);
TaskDialogIndirectPtr task_dialog_indirect = (TaskDialogIndirectPtr)GetProcAddress(comctl, "TaskDialogIndirect");
- if (task_dialog_indirect) {
- int button_pressed;
- if (FAILED(task_dialog_indirect(&config, &button_pressed, nullptr, nullptr))) {
- return FAILED;
- }
+ int button_pressed;
+ if (task_dialog_indirect && SUCCEEDED(task_dialog_indirect(&config, &button_pressed, nullptr, nullptr))) {
if (!p_callback.is_null()) {
Variant button = button_pressed;
const Variant *args[1] = { &button };
@@ -2553,13 +2551,14 @@ Error DisplayServerWindows::dialog_show(String p_title, String p_description, Ve
}
}
- return OK;
+ result = OK;
}
FreeLibrary(comctl);
+ } else {
+ ERR_PRINT("Unable to create native dialog.");
}
- ERR_PRINT("Unable to create native dialog.");
- return FAILED;
+ return result;
}
struct Win32InputTextDialogInit {