Browse Source

wayland: reorder surface destruction to avoid premature blanking

A1029384756 3 weeks ago
parent
commit
9034375d2f
1 changed files with 6 additions and 6 deletions
  1. 6 6
      src/video/wayland/SDL_waylandwindow.c

+ 6 - 6
src/video/wayland/SDL_waylandwindow.c

@@ -2127,12 +2127,6 @@ void Wayland_HideWindow(SDL_VideoDevice *_this, SDL_Window *window)
         wind->server_decoration = NULL;
         wind->server_decoration = NULL;
     }
     }
 
 
-    // Be sure to detach after this is done, otherwise ShowWindow crashes!
-    if (wind->shell_surface_type != WAYLAND_SHELL_SURFACE_TYPE_XDG_POPUP) {
-        wl_surface_attach(wind->surface, NULL, 0, 0);
-        wl_surface_commit(wind->surface);
-    }
-
     // Clean up the export handle.
     // Clean up the export handle.
     if (wind->exported) {
     if (wind->exported) {
         zxdg_exported_v2_destroy(wind->exported);
         zxdg_exported_v2_destroy(wind->exported);
@@ -2170,6 +2164,12 @@ void Wayland_HideWindow(SDL_VideoDevice *_this, SDL_Window *window)
         }
         }
     }
     }
 
 
+    // Be sure to detach after this is done, otherwise ShowWindow crashes!
+    if (wind->shell_surface_type != WAYLAND_SHELL_SURFACE_TYPE_XDG_POPUP) {
+        wl_surface_attach(wind->surface, NULL, 0, 0);
+        wl_surface_commit(wind->surface);
+    }
+
     SDL_zero(wind->shell_surface);
     SDL_zero(wind->shell_surface);
     wind->show_hide_sync_required = true;
     wind->show_hide_sync_required = true;
     struct wl_callback *cb = wl_display_sync(_this->internal->display);
     struct wl_callback *cb = wl_display_sync(_this->internal->display);