| 6786 | } |
| 6787 | |
| 6788 | DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, int p_screen, Context p_context, int64_t p_parent_window, Error &r_error) { |
| 6789 | KeyMappingWindows::initialize(); |
| 6790 | |
| 6791 | tested_drivers.clear(); |
| 6792 | |
| 6793 | drop_events = false; |
| 6794 | key_event_pos = 0; |
| 6795 | |
| 6796 | hInstance = static_cast<OS_Windows *>(OS::get_singleton())->get_hinstance(); |
| 6797 | |
| 6798 | pressrc = 0; |
| 6799 | old_invalid = true; |
| 6800 | mouse_mode = MOUSE_MODE_VISIBLE; |
| 6801 | |
| 6802 | rendering_driver = p_rendering_driver; |
| 6803 | |
| 6804 | // Init TTS |
| 6805 | bool tts_enabled = GLOBAL_GET("audio/general/text_to_speech"); |
| 6806 | if (tts_enabled) { |
| 6807 | initialize_tts(); |
| 6808 | } |
| 6809 | native_menu = memnew(NativeMenuWindows); |
| 6810 | |
| 6811 | #ifdef ACCESSKIT_ENABLED |
| 6812 | if (accessibility_get_mode() != DisplayServer::AccessibilityMode::ACCESSIBILITY_DISABLED) { |
| 6813 | accessibility_driver = memnew(AccessibilityDriverAccessKit); |
| 6814 | if (accessibility_driver->init() != OK) { |
| 6815 | if (OS::get_singleton()->is_stdout_verbose()) { |
| 6816 | ERR_PRINT("Can't create an accessibility driver, accessibility support disabled!"); |
| 6817 | } |
| 6818 | memdelete(accessibility_driver); |
| 6819 | accessibility_driver = nullptr; |
| 6820 | } |
| 6821 | } |
| 6822 | #endif |
| 6823 | |
| 6824 | // Enforce default keep screen on value. |
| 6825 | screen_set_keep_on(GLOBAL_GET("display/window/energy_saving/keep_screen_on")); |
| 6826 | |
| 6827 | // Load Windows version info. |
| 6828 | ZeroMemory(&os_ver, sizeof(OSVERSIONINFOW)); |
| 6829 | os_ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW); |
| 6830 | |
| 6831 | HMODULE nt_lib = LoadLibraryW(L"ntdll.dll"); |
| 6832 | if (nt_lib) { |
| 6833 | 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. |
| 6834 | if (!wine_get_version) { |
| 6835 | RtlGetVersionPtr RtlGetVersion = (RtlGetVersionPtr)(void *)GetProcAddress(nt_lib, "RtlGetVersion"); |
| 6836 | if (RtlGetVersion) { |
| 6837 | RtlGetVersion(&os_ver); |
| 6838 | } |
| 6839 | } |
| 6840 | FreeLibrary(nt_lib); |
| 6841 | } |
| 6842 | |
| 6843 | // Load UXTheme. |
| 6844 | if (os_ver.dwBuildNumber >= 10240) { // Not available on Wine, use only if real Windows 10/11 detected. |
| 6845 | HMODULE ux_theme_lib = LoadLibraryW(L"uxtheme.dll"); |
nothing calls this directly
no test coverage detected