mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 10:50:10 +00:00
wayland: Ensure we destroy the shell surface when destroying the surface
Otherwise we can try and use an invalid object that the compositor has already deleted.
This commit is contained in:
parent
8bd1478596
commit
91a11ee277
@ -764,7 +764,11 @@ gdk_wayland_window_hide (GdkWindow *window)
|
||||
|
||||
if (impl->surface)
|
||||
{
|
||||
wl_surface_destroy(impl->surface);
|
||||
if (impl->shell_surface)
|
||||
wl_shell_surface_destroy(impl->shell_surface);
|
||||
if (impl->surface)
|
||||
wl_surface_destroy(impl->surface);
|
||||
impl->shell_surface = NULL;
|
||||
impl->surface = NULL;
|
||||
cairo_surface_destroy(impl->server_surface);
|
||||
impl->server_surface = NULL;
|
||||
@ -788,13 +792,17 @@ gdk_window_wayland_withdraw (GdkWindow *window)
|
||||
|
||||
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
if (impl->surface)
|
||||
{
|
||||
wl_surface_destroy(impl->surface);
|
||||
impl->surface = NULL;
|
||||
cairo_surface_destroy(impl->server_surface);
|
||||
impl->server_surface = NULL;
|
||||
impl->mapped = FALSE;
|
||||
}
|
||||
{
|
||||
if (impl->shell_surface)
|
||||
wl_shell_surface_destroy(impl->shell_surface);
|
||||
if (impl->surface)
|
||||
wl_surface_destroy(impl->surface);
|
||||
impl->shell_surface = NULL;
|
||||
impl->surface = NULL;
|
||||
cairo_surface_destroy(impl->server_surface);
|
||||
impl->server_surface = NULL;
|
||||
impl->mapped = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1034,9 +1042,12 @@ gdk_wayland_window_destroy (GdkWindow *window,
|
||||
|
||||
if (!recursing && !foreign_destroy)
|
||||
{
|
||||
if (GDK_WINDOW_IMPL_WAYLAND (window->impl)->surface)
|
||||
wl_surface_destroy(GDK_WINDOW_IMPL_WAYLAND (window->impl)->surface);
|
||||
wl_shell_surface_destroy(GDK_WINDOW_IMPL_WAYLAND (window->impl)->shell_surface);
|
||||
if (impl->shell_surface)
|
||||
wl_shell_surface_destroy(impl->shell_surface);
|
||||
if (impl->surface)
|
||||
wl_surface_destroy(impl->surface);
|
||||
impl->shell_surface = NULL;
|
||||
impl->surface = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user