Merge pull request #94428 from alvinhochun/windows-angle-resize-sync
Windows: Update ANGLE surface size when window is resized
This commit is contained in:
commit
3fce516155
|
@ -4852,16 +4852,16 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
rect_changed = true;
|
||||
}
|
||||
#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.
|
||||
rendering_context->window_set_size(window_id, window.width, window.height);
|
||||
}
|
||||
#endif
|
||||
#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);
|
||||
}
|
||||
if (gl_manager_angle) {
|
||||
if (window.create_completed && gl_manager_angle) {
|
||||
gl_manager_angle->window_resize(window_id, window.width, window.height);
|
||||
}
|
||||
#endif
|
||||
|
@ -5590,6 +5590,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);
|
||||
}
|
||||
|
||||
wd.create_completed = true;
|
||||
window_id_counter++;
|
||||
}
|
||||
|
||||
|
|
|
@ -441,6 +441,7 @@ class DisplayServerWindows : public DisplayServer {
|
|||
|
||||
Vector<Vector2> mpath;
|
||||
|
||||
bool create_completed = false;
|
||||
bool pre_fs_valid = false;
|
||||
RECT pre_fs_rect;
|
||||
bool maximized = false;
|
||||
|
|
|
@ -67,4 +67,9 @@ Vector<EGLint> GLManagerANGLE_Windows::_get_platform_context_attribs() const {
|
|||
return ret;
|
||||
}
|
||||
|
||||
void GLManagerANGLE_Windows::window_resize(DisplayServer::WindowID p_window_id, int p_width, int p_height) {
|
||||
window_make_current(p_window_id);
|
||||
eglWaitNative(EGL_CORE_NATIVE_ENGINE);
|
||||
}
|
||||
|
||||
#endif // WINDOWS_ENABLED && GLES3_ENABLED
|
||||
|
|
|
@ -50,7 +50,7 @@ private:
|
|||
virtual Vector<EGLint> _get_platform_context_attribs() const override;
|
||||
|
||||
public:
|
||||
void window_resize(DisplayServer::WindowID p_window_id, int p_width, int p_height) {}
|
||||
void window_resize(DisplayServer::WindowID p_window_id, int p_width, int p_height);
|
||||
|
||||
GLManagerANGLE_Windows(){};
|
||||
~GLManagerANGLE_Windows(){};
|
||||
|
|
Loading…
Reference in New Issue