Fix window size in X11 when window manager refuses to resize (cherry picked from commit a67ae8eed57f4545c739e6eb3a4b8c1169d3afbc)
diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c
index fd1be43..ea8901d 100644
--- a/src/video/x11/SDL_x11window.c
+++ b/src/video/x11/SDL_x11window.c
@@ -418,7 +418,7 @@ int X11_CreateWindow(_THIS, SDL_Window *window)
#if SDL_VIDEO_OPENGL_EGL
if (((_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES) ||
SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_FORCE_EGL, SDL_FALSE))
-#if SDL_VIDEO_OPENGL_GLX
+#if SDL_VIDEO_OPENGL_GLX
&& ( !_this->gl_data || X11_GL_UseEGL(_this) )
#endif
) {
@@ -641,9 +641,9 @@ int X11_CreateWindow(_THIS, SDL_Window *window)
if ((window->flags & SDL_WINDOW_OPENGL) &&
((_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES) ||
SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_FORCE_EGL, SDL_FALSE))
-#if SDL_VIDEO_OPENGL_GLX
+#if SDL_VIDEO_OPENGL_GLX
&& ( !_this->gl_data || X11_GL_UseEGL(_this) )
-#endif
+#endif
) {
#if SDL_VIDEO_OPENGL_EGL
if (!_this->egl_data) {
@@ -979,6 +979,10 @@ void X11_SetWindowSize(_THIS, SDL_Window *window)
}
if (SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {
+ /* Timeout occurred and window size didn't change
+ * wwindow manager likely denied the resize. */
+ window->w = orig_w;
+ window->h = orig_h;
break;
}