Windows: Do not attempt to resize surface before it is created
`WM_WINDOWPOSCHANGED` may be received before `CreateWindowExW` has even returned, when the window's rendering context or OpenGL context hasn't been created yet.
This commit is contained in:
parent
97b8ad1af0
commit
d7f023ab73
|
@ -4686,16 +4686,16 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
||||||
rect_changed = true;
|
rect_changed = true;
|
||||||
}
|
}
|
||||||
#if defined(RD_ENABLED)
|
#if defined(RD_ENABLED)
|
||||||
if (rendering_context && window.context_created) {
|
if (window.create_completed && rendering_context && window.context_created) {
|
||||||
// Note: Trigger resize event to update swapchains when window is minimized/restored, even if size is not changed.
|
// Note: Trigger resize event to update swapchains when window is minimized/restored, even if size is not changed.
|
||||||
rendering_context->window_set_size(window_id, window.width, window.height);
|
rendering_context->window_set_size(window_id, window.width, window.height);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(GLES3_ENABLED)
|
#if defined(GLES3_ENABLED)
|
||||||
if (gl_manager_native) {
|
if (window.create_completed && gl_manager_native) {
|
||||||
gl_manager_native->window_resize(window_id, window.width, window.height);
|
gl_manager_native->window_resize(window_id, window.width, window.height);
|
||||||
}
|
}
|
||||||
if (gl_manager_angle) {
|
if (window.create_completed && gl_manager_angle) {
|
||||||
gl_manager_angle->window_resize(window_id, window.width, window.height);
|
gl_manager_angle->window_resize(window_id, window.width, window.height);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -5403,6 +5403,7 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode,
|
||||||
SetWindowPos(wd.hWnd, HWND_TOP, srect.position.x, srect.position.y, srect.size.width, srect.size.height, SWP_NOZORDER | SWP_NOACTIVATE);
|
SetWindowPos(wd.hWnd, HWND_TOP, srect.position.x, srect.position.y, srect.size.width, srect.size.height, SWP_NOZORDER | SWP_NOACTIVATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wd.create_completed = true;
|
||||||
window_id_counter++;
|
window_id_counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -385,6 +385,7 @@ class DisplayServerWindows : public DisplayServer {
|
||||||
|
|
||||||
Vector<Vector2> mpath;
|
Vector<Vector2> mpath;
|
||||||
|
|
||||||
|
bool create_completed = false;
|
||||||
bool pre_fs_valid = false;
|
bool pre_fs_valid = false;
|
||||||
RECT pre_fs_rect;
|
RECT pre_fs_rect;
|
||||||
bool maximized = false;
|
bool maximized = false;
|
||||||
|
|
Loading…
Reference in New Issue