Browse Source

wayland: Call SetWindowBordered at the end of ShowWindow

Ethan Lee 4 years ago
parent
commit
f2f451a59d
1 changed files with 9 additions and 1 deletions
  1. 9 1
      src/video/wayland/SDL_waylandwindow.c

+ 9 - 1
src/video/wayland/SDL_waylandwindow.c

@@ -700,7 +700,6 @@ void Wayland_ShowWindow(_THIS, SDL_Window *window)
 
     /* Restore state that was set prior to this call */
     Wayland_SetWindowTitle(_this, window);
-    Wayland_SetWindowBordered(_this, window, (window->flags & SDL_WINDOW_BORDERLESS) == 0);
     if (window->flags & SDL_WINDOW_MAXIMIZED) {
         Wayland_MaximizeWindow(_this, window);
     }
@@ -732,6 +731,15 @@ void Wayland_ShowWindow(_THIS, SDL_Window *window)
             }
         }
     }
+
+    /* Unlike the rest of window state we have to set this _after_ flushing the
+     * display, because we need to create the decorations before possibly hiding
+     * them immediately afterward. But don't call it redundantly, the protocol
+     * may not interpret a redundant call nicely and cause weird stuff to happen
+     */
+    if (window->flags & SDL_WINDOW_BORDERLESS) {
+        Wayland_SetWindowBordered(_this, window, SDL_FALSE);
+    }
 }
 
 void Wayland_HideWindow(_THIS, SDL_Window *window)