Browse Source

Wayland: Fix map before XDG decoration configure

If the xdg_toplevel has a decoration, we need to wait for its first
configure event as well before we are allowed to attach the first
buffer.

It seems racy to assume that this will always happen inside the first
surface configure sequence, so this commit makes that condition
explicit.  This may turn out to have been overly defensive.
Camilla Löwy 3 năm trước cách đây
mục cha
commit
3203599cac
1 tập tin đã thay đổi với 7 bổ sung2 xóa
  1. 7 2
      src/wl_window.c

+ 7 - 2
src/wl_window.c

@@ -569,8 +569,13 @@ static void xdgSurfaceHandleConfigure(void* userData,
 
 
     if (!window->wl.visible)
     if (!window->wl.visible)
     {
     {
-        window->wl.visible = GLFW_TRUE;
-        _glfwInputWindowDamage(window);
+        // Allow the window to be mapped only if it either has no XDG
+        // decorations or they have already received a configure event
+        if (!window->wl.xdg.decoration || window->wl.xdg.decorationMode)
+        {
+            window->wl.visible = GLFW_TRUE;
+            _glfwInputWindowDamage(window);
+        }
     }
     }
 }
 }