Browse Source

OS_X11::set_window_maximized gives up after 0.5s

Spinning forever is clearly worse, especially since this happens on at
least FVWM even though the window actually is maximized.

(cherry picked from commit deb73001ab3874afa40dd12a4260e2d4c9fba641)
Carl Drougge 6 years ago
parent
commit
cd538d23cc
1 changed files with 6 additions and 3 deletions
  1. 6 3
      platform/x11/os_x11.cpp

+ 6 - 3
platform/x11/os_x11.cpp

@@ -1382,9 +1382,12 @@ void OS_X11::set_window_maximized(bool p_enabled) {
 
 	XSendEvent(x11_display, DefaultRootWindow(x11_display), False, SubstructureRedirectMask | SubstructureNotifyMask, &xev);
 
-	if (is_window_maximize_allowed()) {
-		while (p_enabled && !is_window_maximized()) {
-			// Wait for effective resizing (so the GLX context is too).
+	if (p_enabled && is_window_maximize_allowed()) {
+		// Wait for effective resizing (so the GLX context is too).
+		// Give up after 0.5s, it's not going to happen on this WM.
+		// https://github.com/godotengine/godot/issues/19978
+		for (int attempt = 0; !is_window_maximized() && attempt < 50; attempt++) {
+			usleep(10000);
 		}
 	}