Merge pull request #89192 from 398utubzyt/windows/free-lib-in-dialog-show
Windows: Fix `FreeLibrary` not always being called in `DisplayServerWindows::dialog_show`
This commit is contained in:
commit
8b0eecdfae
1 changed files with 7 additions and 8 deletions
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue