Procházet zdrojové kódy

wayland: Ensure that the toplevel window is recreated when switching decoration modes

If a compositor tries to change the decoration mode when initially creating a window, the hidden flag might not yet be unset if the decoration mode is changed during the initial roundtrip in Wayland_ShowWindow(). As hiding the window destroys the decoration manager object, the hidden flag check is unnecessary, as the decoration configuration listener will never be entered when the window is hidden.
Frank Praznik před 1 rokem
rodič
revize
37e1fc3b58
1 změnil soubory, kde provedl 2 přidání a 3 odebrání
  1. 2 3
      src/video/wayland/SDL_waylandwindow.c

+ 2 - 3
src/video/wayland/SDL_waylandwindow.c

@@ -855,11 +855,10 @@ static void handle_configure_zxdg_decoration(void *data,
         WAYLAND_wl_display_roundtrip(driverdata->waylandData->display);
 
         Wayland_HideWindow(device, window);
+        SDL_zero(driverdata->shell_surface);
         driverdata->shell_surface_type = WAYLAND_SURFACE_LIBDECOR;
 
-        if (!window->is_hiding && !(window->flags & SDL_WINDOW_HIDDEN)) {
-            Wayland_ShowWindow(device, window);
-        }
+        Wayland_ShowWindow(device, window);
     }
 }