浏览代码

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 年之前
父节点
当前提交
cd538d23cc
共有 1 个文件被更改,包括 6 次插入3 次删除
  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);
 		}
 	}