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.

(cherry picked from commit 37e1fc3b5894f379f4f8253b867a76a135213a7d)
This commit is contained in:
Frank Praznik 2023-09-06 12:18:27 -04:00
parent 1d495351a0
commit 88299502b4

View File

@ -755,12 +755,11 @@ 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);
}
}
}
static const struct zxdg_toplevel_decoration_v1_listener decoration_listener = {