Răsfoiți Sursa

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 ani în urmă
părinte
comite
cd538d23cc
1 a modificat fișierele cu 6 adăugiri și 3 ștergeri
  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);
 	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);
 		}
 		}
 	}
 	}