Browse Source

Windows: Fix wrong initial size passed to rendering driver

Alvin Wong 1 year ago
parent
commit
1d542257e5
1 changed files with 6 additions and 3 deletions
  1. 6 3
      platform/windows/display_server_windows.cpp

+ 6 - 3
platform/windows/display_server_windows.cpp

@@ -5247,6 +5247,9 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode,
 			::DwmSetWindowAttribute(wd.hWnd, use_legacy_dark_mode_before_20H1 ? DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 : DWMWA_USE_IMMERSIVE_DARK_MODE, &value, sizeof(value));
 			::DwmSetWindowAttribute(wd.hWnd, use_legacy_dark_mode_before_20H1 ? DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 : DWMWA_USE_IMMERSIVE_DARK_MODE, &value, sizeof(value));
 		}
 		}
 
 
+		RECT real_client_rect;
+		GetClientRect(wd.hWnd, &real_client_rect);
+
 #ifdef RD_ENABLED
 #ifdef RD_ENABLED
 		if (rendering_context) {
 		if (rendering_context) {
 			union {
 			union {
@@ -5276,7 +5279,7 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode,
 				return INVALID_WINDOW_ID;
 				return INVALID_WINDOW_ID;
 			}
 			}
 
 
-			rendering_context->window_set_size(id, WindowRect.right - WindowRect.left, WindowRect.bottom - WindowRect.top);
+			rendering_context->window_set_size(id, real_client_rect.right - real_client_rect.left, real_client_rect.bottom - real_client_rect.top);
 			rendering_context->window_set_vsync_mode(id, p_vsync_mode);
 			rendering_context->window_set_vsync_mode(id, p_vsync_mode);
 			wd.context_created = true;
 			wd.context_created = true;
 		}
 		}
@@ -5284,7 +5287,7 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode,
 
 
 #ifdef GLES3_ENABLED
 #ifdef GLES3_ENABLED
 		if (gl_manager_native) {
 		if (gl_manager_native) {
-			if (gl_manager_native->window_create(id, wd.hWnd, hInstance, WindowRect.right - WindowRect.left, WindowRect.bottom - WindowRect.top) != OK) {
+			if (gl_manager_native->window_create(id, wd.hWnd, hInstance, real_client_rect.right - real_client_rect.left, real_client_rect.bottom - real_client_rect.top) != OK) {
 				memdelete(gl_manager_native);
 				memdelete(gl_manager_native);
 				gl_manager_native = nullptr;
 				gl_manager_native = nullptr;
 				windows.erase(id);
 				windows.erase(id);
@@ -5294,7 +5297,7 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode,
 		}
 		}
 
 
 		if (gl_manager_angle) {
 		if (gl_manager_angle) {
-			if (gl_manager_angle->window_create(id, nullptr, wd.hWnd, WindowRect.right - WindowRect.left, WindowRect.bottom - WindowRect.top) != OK) {
+			if (gl_manager_angle->window_create(id, nullptr, wd.hWnd, real_client_rect.right - real_client_rect.left, real_client_rect.bottom - real_client_rect.top) != OK) {
 				memdelete(gl_manager_angle);
 				memdelete(gl_manager_angle);
 				gl_manager_angle = nullptr;
 				gl_manager_angle = nullptr;
 				windows.erase(id);
 				windows.erase(id);