浏览代码

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.
Carl Drougge 6 年之前
父节点
当前提交
deb73001ab
共有 1 个文件被更改,包括 6 次插入3 次删除
  1. 6 3
      platform/x11/os_x11.cpp

+ 6 - 3
platform/x11/os_x11.cpp

@@ -1518,9 +1518,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);
 		}
 	}