wayland: Drop cairo surfaces when withdrawing
authorOlivier Fourdan <ofourdan@redhat.com>
Tue, 30 Jan 2018 12:57:35 +0000 (13:57 +0100)
committerOlivier Fourdan <ofourdan@redhat.com>
Fri, 16 Mar 2018 15:01:21 +0000 (16:01 +0100)
commit3bd7b379c8d2c7e57ce22501420791c4bfcf24ca
treea23f73f6d11adbaa81d5659d2eebfe1b5ec56aa6
parent5d27915aa4c404bd99a0c8aef51cccc24bead4d2
wayland: Drop cairo surfaces when withdrawing

If a window is unmapped by the client while gdk is processing updates,
(for example Firefox un-mapping its window on Expose events), the
windowing backend resources might be lost (for example with Wayland)
which can cause a crash in end_paint().

Make sure we drop the cairo surfaces as well when hiding the surface,
that will avoid the crash in gdk_window_impl_wayland_end_paint() when
trying to attach the staging cairo surface to a released wl_surface,
these will be recreated when needed when the surface becomes visible
again and there is no need to keep such buffers around for a surface
which is not visible anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=793062
gdk/wayland/gdkwindow-wayland.c