Fix Wayland client crash unmapping a window while gdk is processing
This commit is contained in:
3
debian/changelog
vendored
3
debian/changelog
vendored
@ -1,6 +1,9 @@
|
||||
gtk+3.0 (3.22.29-3) UNRELEASED; urgency=medium
|
||||
|
||||
* Allow stderr in autopkgtests. They produce harmless diagnostics.
|
||||
* d/p/0013-wayland-Drop-cairo-surfaces-when-withdrawing.patch:
|
||||
Add patch from upstream fixing a Wayland client crash if it unmaps
|
||||
a window while gdk is processing updates
|
||||
|
||||
-- Simon McVittie <smcv@debian.org> Thu, 22 Mar 2018 15:47:57 +0000
|
||||
|
||||
|
||||
42
debian/patches/0013-wayland-Drop-cairo-surfaces-when-withdrawing.patch
vendored
Normal file
42
debian/patches/0013-wayland-Drop-cairo-surfaces-when-withdrawing.patch
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Tue, 30 Jan 2018 13:57:35 +0100
|
||||
Subject: 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.
|
||||
|
||||
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=793062
|
||||
Origin: upstream, 3.22.30, commit:3bd7b379c8d2c7e57ce22501420791c4bfcf24ca
|
||||
---
|
||||
gdk/wayland/gdkwindow-wayland.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
|
||||
index 9ee4fe2..38c23c2 100644
|
||||
--- a/gdk/wayland/gdkwindow-wayland.c
|
||||
+++ b/gdk/wayland/gdkwindow-wayland.c
|
||||
@@ -2600,6 +2600,7 @@ gdk_wayland_window_hide_surface (GdkWindow *window)
|
||||
unset_transient_for_exported (window);
|
||||
|
||||
_gdk_wayland_window_clear_saved_size (window);
|
||||
+ drop_cairo_surfaces (window);
|
||||
impl->pending_commit = FALSE;
|
||||
impl->mapped = FALSE;
|
||||
}
|
||||
@@ -2916,7 +2917,6 @@ gdk_wayland_window_destroy (GdkWindow *window,
|
||||
g_return_if_fail (!foreign_destroy);
|
||||
|
||||
gdk_wayland_window_hide_surface (window);
|
||||
- drop_cairo_surfaces (window);
|
||||
}
|
||||
|
||||
static void
|
||||
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@ -10,3 +10,4 @@ gdk-x11-Check-if-we-have-access-to-GL-before-using-G.patch
|
||||
0010-imwayland-Avoid-TOGGLE_INPUT_PANEL-requests-if-there.patch
|
||||
0011-gtkstylecontext-guard-against-gtk_css_widget_node_ge.patch
|
||||
0012-widget-Only-print-allocation-warnings-with-enable-de.patch
|
||||
0013-wayland-Drop-cairo-surfaces-when-withdrawing.patch
|
||||
|
||||
Reference in New Issue
Block a user