8383
8484#define WM_INDICATOR_CALLBACK_MESSAGE (WM_USER + 1 )
8585
86- #if defined(__GNUC__)
87- // Workaround GCC warning from -Wcast-function-type.
88- #define GetProcAddress (void *)GetProcAddress
89- #endif
90-
9186static String format_error_message (DWORD id) {
9287 LPWSTR messageBuffer = nullptr ;
9388 size_t size = FormatMessageW (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
@@ -1294,7 +1289,7 @@ static int QueryDpiForMonitor(HMONITOR hmon, _MonitorDpiType dpiType = MDT_Defau
12941289
12951290 if (Shcore == nullptr ) {
12961291 Shcore = LoadLibraryW (L" Shcore.dll" );
1297- getDPIForMonitor = Shcore ? (GetDPIForMonitor_t)GetProcAddress (Shcore, " GetDpiForMonitor" ) : nullptr ;
1292+ getDPIForMonitor = Shcore ? (GetDPIForMonitor_t)( void *) GetProcAddress (Shcore, " GetDpiForMonitor" ) : nullptr ;
12981293
12991294 if ((Shcore == nullptr ) || (getDPIForMonitor == nullptr )) {
13001295 if (Shcore) {
@@ -3137,7 +3132,7 @@ Error DisplayServerWindows::dialog_show(String p_title, String p_description, Ve
31373132 if (comctl) {
31383133 typedef HRESULT (WINAPI * TaskDialogIndirectPtr)(const TASKDIALOGCONFIG *pTaskConfig, int *pnButton, int *pnRadioButton, BOOL *pfVerificationFlagChecked);
31393134
3140- TaskDialogIndirectPtr task_dialog_indirect = (TaskDialogIndirectPtr)GetProcAddress (comctl, " TaskDialogIndirect" );
3135+ TaskDialogIndirectPtr task_dialog_indirect = (TaskDialogIndirectPtr)( void *) GetProcAddress (comctl, " TaskDialogIndirect" );
31413136 int button_pressed;
31423137
31433138 if (task_dialog_indirect && SUCCEEDED (task_dialog_indirect (&config, &button_pressed, nullptr , nullptr ))) {
@@ -6592,9 +6587,9 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
65926587
65936588 HMODULE nt_lib = LoadLibraryW (L" ntdll.dll" );
65946589 if (nt_lib) {
6595- WineGetVersionPtr wine_get_version = (WineGetVersionPtr)GetProcAddress (nt_lib, " wine_get_version" ); // Do not read Windows build number under Wine, it can be set to arbitrary value.
6590+ WineGetVersionPtr wine_get_version = (WineGetVersionPtr)( void *) GetProcAddress (nt_lib, " wine_get_version" ); // Do not read Windows build number under Wine, it can be set to arbitrary value.
65966591 if (!wine_get_version) {
6597- RtlGetVersionPtr RtlGetVersion = (RtlGetVersionPtr)GetProcAddress (nt_lib, " RtlGetVersion" );
6592+ RtlGetVersionPtr RtlGetVersion = (RtlGetVersionPtr)( void *) GetProcAddress (nt_lib, " RtlGetVersion" );
65986593 if (RtlGetVersion) {
65996594 RtlGetVersion (&os_ver);
66006595 }
@@ -6605,28 +6600,28 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
66056600 // Load Shell API.
66066601 HMODULE shellapi_lib = LoadLibraryW (L" shlwapi.dll" );
66076602 if (shellapi_lib) {
6608- load_indirect_string = (SHLoadIndirectStringPtr)GetProcAddress (shellapi_lib, " SHLoadIndirectString" );
6603+ load_indirect_string = (SHLoadIndirectStringPtr)( void *) GetProcAddress (shellapi_lib, " SHLoadIndirectString" );
66096604 }
66106605
66116606 // Load UXTheme, available on Windows 10+ only.
66126607 if (os_ver.dwBuildNumber >= 10240 ) {
66136608 HMODULE ux_theme_lib = LoadLibraryW (L" uxtheme.dll" );
66146609 if (ux_theme_lib) {
6615- ShouldAppsUseDarkMode = (ShouldAppsUseDarkModePtr)GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (132 ));
6616- GetImmersiveColorFromColorSetEx = (GetImmersiveColorFromColorSetExPtr)GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (95 ));
6617- GetImmersiveColorTypeFromName = (GetImmersiveColorTypeFromNamePtr)GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (96 ));
6618- GetImmersiveUserColorSetPreference = (GetImmersiveUserColorSetPreferencePtr)GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (98 ));
6610+ ShouldAppsUseDarkMode = (ShouldAppsUseDarkModePtr)( void *) GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (132 ));
6611+ GetImmersiveColorFromColorSetEx = (GetImmersiveColorFromColorSetExPtr)( void *) GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (95 ));
6612+ GetImmersiveColorTypeFromName = (GetImmersiveColorTypeFromNamePtr)( void *) GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (96 ));
6613+ GetImmersiveUserColorSetPreference = (GetImmersiveUserColorSetPreferencePtr)( void *) GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (98 ));
66196614 if (os_ver.dwBuildNumber >= 17763 ) { // Windows 10 Redstone 5 (1809)+ only.
66206615 AllowDarkModeForAppPtr AllowDarkModeForApp = nullptr ;
66216616 SetPreferredAppModePtr SetPreferredAppMode = nullptr ;
66226617 FlushMenuThemesPtr FlushMenuThemes = nullptr ;
66236618 if (os_ver.dwBuildNumber < 18362 ) { // Windows 10 Redstone 5 (1809) and 19H1 (1903) only.
6624- AllowDarkModeForApp = (AllowDarkModeForAppPtr)GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (135 ));
6619+ AllowDarkModeForApp = (AllowDarkModeForAppPtr)( void *) GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (135 ));
66256620 } else { // Windows 10 19H2 (1909)+ only.
6626- SetPreferredAppMode = (SetPreferredAppModePtr)GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (135 ));
6627- FlushMenuThemes = (FlushMenuThemesPtr)GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (136 ));
6621+ SetPreferredAppMode = (SetPreferredAppModePtr)( void *) GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (135 ));
6622+ FlushMenuThemes = (FlushMenuThemesPtr)( void *) GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (136 ));
66286623 }
6629- RefreshImmersiveColorPolicyStatePtr RefreshImmersiveColorPolicyState = (RefreshImmersiveColorPolicyStatePtr)GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (104 ));
6624+ RefreshImmersiveColorPolicyStatePtr RefreshImmersiveColorPolicyState = (RefreshImmersiveColorPolicyStatePtr)( void *) GetProcAddress (ux_theme_lib, MAKEINTRESOURCEA (104 ));
66306625 if (ShouldAppsUseDarkMode) {
66316626 bool dark_mode = ShouldAppsUseDarkMode ();
66326627 if (SetPreferredAppMode) {
@@ -6659,10 +6654,10 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
66596654 // Note: DPI conversion API, available on Windows 8.1+ only.
66606655 HMODULE user32_lib = LoadLibraryW (L" user32.dll" );
66616656 if (user32_lib) {
6662- win8p_GetPointerType = (GetPointerTypePtr)GetProcAddress (user32_lib, " GetPointerType" );
6663- win8p_GetPointerPenInfo = (GetPointerPenInfoPtr)GetProcAddress (user32_lib, " GetPointerPenInfo" );
6664- win81p_LogicalToPhysicalPointForPerMonitorDPI = (LogicalToPhysicalPointForPerMonitorDPIPtr)GetProcAddress (user32_lib, " LogicalToPhysicalPointForPerMonitorDPI" );
6665- win81p_PhysicalToLogicalPointForPerMonitorDPI = (PhysicalToLogicalPointForPerMonitorDPIPtr)GetProcAddress (user32_lib, " PhysicalToLogicalPointForPerMonitorDPI" );
6657+ win8p_GetPointerType = (GetPointerTypePtr)( void *) GetProcAddress (user32_lib, " GetPointerType" );
6658+ win8p_GetPointerPenInfo = (GetPointerPenInfoPtr)( void *) GetProcAddress (user32_lib, " GetPointerPenInfo" );
6659+ win81p_LogicalToPhysicalPointForPerMonitorDPI = (LogicalToPhysicalPointForPerMonitorDPIPtr)( void *) GetProcAddress (user32_lib, " LogicalToPhysicalPointForPerMonitorDPI" );
6660+ win81p_PhysicalToLogicalPointForPerMonitorDPI = (PhysicalToLogicalPointForPerMonitorDPIPtr)( void *) GetProcAddress (user32_lib, " PhysicalToLogicalPointForPerMonitorDPI" );
66666661
66676662 winink_available = win8p_GetPointerType && win8p_GetPointerPenInfo;
66686663 }
@@ -6674,11 +6669,11 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
66746669 // Note: Wacom WinTab driver API for pen input, for devices incompatible with Windows Ink.
66756670 HMODULE wintab_lib = LoadLibraryW (L" wintab32.dll" );
66766671 if (wintab_lib) {
6677- wintab_WTOpen = (WTOpenPtr)GetProcAddress (wintab_lib, " WTOpenW" );
6678- wintab_WTClose = (WTClosePtr)GetProcAddress (wintab_lib, " WTClose" );
6679- wintab_WTInfo = (WTInfoPtr)GetProcAddress (wintab_lib, " WTInfoW" );
6680- wintab_WTPacket = (WTPacketPtr)GetProcAddress (wintab_lib, " WTPacket" );
6681- wintab_WTEnable = (WTEnablePtr)GetProcAddress (wintab_lib, " WTEnable" );
6672+ wintab_WTOpen = (WTOpenPtr)( void *) GetProcAddress (wintab_lib, " WTOpenW" );
6673+ wintab_WTClose = (WTClosePtr)( void *) GetProcAddress (wintab_lib, " WTClose" );
6674+ wintab_WTInfo = (WTInfoPtr)( void *) GetProcAddress (wintab_lib, " WTInfoW" );
6675+ wintab_WTPacket = (WTPacketPtr)( void *) GetProcAddress (wintab_lib, " WTPacket" );
6676+ wintab_WTEnable = (WTEnablePtr)( void *) GetProcAddress (wintab_lib, " WTEnable" );
66826677
66836678 wintab_available = wintab_WTOpen && wintab_WTClose && wintab_WTInfo && wintab_WTPacket && wintab_WTEnable;
66846679 }
@@ -6716,7 +6711,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
67166711 if (Shcore != nullptr ) {
67176712 typedef HRESULT (WINAPI * SetProcessDpiAwareness_t)(SHC_PROCESS_DPI_AWARENESS);
67186713
6719- SetProcessDpiAwareness_t SetProcessDpiAwareness = (SetProcessDpiAwareness_t)GetProcAddress (Shcore, " SetProcessDpiAwareness" );
6714+ SetProcessDpiAwareness_t SetProcessDpiAwareness = (SetProcessDpiAwareness_t)( void *) GetProcAddress (Shcore, " SetProcessDpiAwareness" );
67206715
67216716 if (SetProcessDpiAwareness) {
67226717 SetProcessDpiAwareness (SHC_PROCESS_SYSTEM_DPI_AWARE);
@@ -6727,7 +6722,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
67276722 HMODULE comctl32 = LoadLibraryW (L" comctl32.dll" );
67286723 if (comctl32) {
67296724 typedef BOOL (WINAPI * InitCommonControlsExPtr)(_In_ const INITCOMMONCONTROLSEX *picce);
6730- InitCommonControlsExPtr init_common_controls_ex = (InitCommonControlsExPtr)GetProcAddress (comctl32, " InitCommonControlsEx" );
6725+ InitCommonControlsExPtr init_common_controls_ex = (InitCommonControlsExPtr)( void *) GetProcAddress (comctl32, " InitCommonControlsEx" );
67316726
67326727 // Fails if the incorrect version was loaded. Probably not a big enough deal to print an error about.
67336728 if (init_common_controls_ex) {
@@ -6849,7 +6844,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
68496844#else
68506845 typedef BOOL (WINAPI * IsWow64Process2Ptr)(HANDLE, USHORT *, USHORT *);
68516846
6852- IsWow64Process2Ptr IsWow64Process2 = (IsWow64Process2Ptr)GetProcAddress (GetModuleHandle (TEXT (" kernel32" )), " IsWow64Process2" );
6847+ IsWow64Process2Ptr IsWow64Process2 = (IsWow64Process2Ptr)( void *) GetProcAddress (GetModuleHandle (TEXT (" kernel32" )), " IsWow64Process2" );
68536848 if (IsWow64Process2) {
68546849 USHORT process_arch = 0 ;
68556850 USHORT machine_arch = 0 ;
0 commit comments