diff options
Diffstat (limited to 'platform/windows')
| -rw-r--r-- | platform/windows/display_server_windows.cpp | 13 | ||||
| -rw-r--r-- | platform/windows/display_server_windows.h | 2 |
2 files changed, 15 insertions, 0 deletions
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp index 6ee35d4fbd..b84e1f8eea 100644 --- a/platform/windows/display_server_windows.cpp +++ b/platform/windows/display_server_windows.cpp @@ -3401,6 +3401,19 @@ DisplayServer::VSyncMode DisplayServerWindows::window_get_vsync_mode(WindowID p_ void DisplayServerWindows::set_context(Context p_context) { } +bool DisplayServerWindows::is_window_transparency_available() const { + BOOL dwm_enabled = true; + if (DwmIsCompositionEnabled(&dwm_enabled) == S_OK) { // Note: Always enabled on Windows 8+, this check can be removed after Windows 7 support is dropped. + if (!dwm_enabled) { + return false; + } + } + if (rendering_device && !rendering_device->is_composite_alpha_supported()) { + return false; + } + return OS::get_singleton()->is_layered_allowed(); +} + #define MI_WP_SIGNATURE 0xFF515700 #define SIGNATURE_MASK 0xFFFFFF00 // Keeping the name suggested by Microsoft, but this macro really answers: diff --git a/platform/windows/display_server_windows.h b/platform/windows/display_server_windows.h index ef9c470157..9a4eeba486 100644 --- a/platform/windows/display_server_windows.h +++ b/platform/windows/display_server_windows.h @@ -697,6 +697,8 @@ public: virtual void set_context(Context p_context) override; + virtual bool is_window_transparency_available() const override; + static DisplayServer *create_func(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, Error &r_error); static Vector<String> get_rendering_drivers_func(); static void register_windows_driver(); |
