summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebarshi Ray <debarshir@gnome.org>2017-10-25 16:35:14 +0200
committerDebarshi Ray <debarshir@gnome.org>2017-10-25 16:50:43 +0200
commit571510f959c252294a400a444bd2ba1ef0095556 (patch)
tree63497d3e527ba3230576c59e2d45ba98c2ee4555
parentCleanup spec file conditionals (diff)
downloadgtk3-classic-build-gtk3-571510f959c252294a400a444bd2ba1ef0095556.tar.gz
gtk3-classic-build-gtk3-571510f959c252294a400a444bd2ba1ef0095556.tar.bz2
gtk3-classic-build-gtk3-571510f959c252294a400a444bd2ba1ef0095556.zip
Backport fix to prevent crashes when adding online accounts
https://bugzilla.gnome.org/show_bug.cgi?id=789141
-rw-r--r--gtk3-gdk-Clear-GL-context-when-window-is-withdrawn.patch42
-rw-r--r--gtk3.spec9
2 files changed, 50 insertions, 1 deletions
diff --git a/gtk3-gdk-Clear-GL-context-when-window-is-withdrawn.patch b/gtk3-gdk-Clear-GL-context-when-window-is-withdrawn.patch
new file mode 100644
index 0000000..d7a690b
--- /dev/null
+++ b/gtk3-gdk-Clear-GL-context-when-window-is-withdrawn.patch
@@ -0,0 +1,42 @@
+From 7c2ff0449adfef596d7eea86b51f2ee40c52ad08 Mon Sep 17 00:00:00 2001
+From: Andrea Azzarone <azzaronea@gmail.com>
+Date: Wed, 18 Oct 2017 12:35:04 +0200
+Subject: [PATCH] gdk: Clear GL context when window is withdrawn
+
+Some clients (e.g. gnome-online-accounts) quickly unmap and map
+a window. With some backends the backend surface will be replaced
+causing the application to crash because the GL context is still
+using the old surface. Clearing the GL context when a window is
+withdrawn fixes this.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=789141
+---
+ gdk/gdkwindow.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
+index c0e0a7d4b2b7..79804cdacdac 100644
+--- a/gdk/gdkwindow.c
++++ b/gdk/gdkwindow.c
+@@ -5744,6 +5744,7 @@ gdk_window_withdraw (GdkWindow *window)
+ {
+ GdkWindowImplClass *impl_class;
+ gboolean was_mapped;
++ GdkGLContext *current_context;
+
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
+@@ -5768,6 +5769,10 @@ gdk_window_withdraw (GdkWindow *window)
+ _gdk_synthesize_crossing_events_for_geometry_change (window->parent);
+ }
+
++ current_context = gdk_gl_context_get_current ();
++ if (current_context != NULL && gdk_gl_context_get_window (current_context) == window)
++ gdk_gl_context_clear_current ();
++
+ recompute_visible_regions (window, FALSE);
+ gdk_window_clear_old_updated_area (window);
+ }
+--
+2.14.2
+
diff --git a/gtk3.spec b/gtk3.spec
index 87e9f48..cc9dbf7 100644
--- a/gtk3.spec
+++ b/gtk3.spec
@@ -22,13 +22,16 @@
Name: gtk3
Version: 3.22.24
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: GTK+ graphical user interface library
License: LGPLv2+
URL: http://www.gtk.org
Source0: http://download.gnome.org/sources/gtk+/3.22/gtk+-%{version}.tar.xz
+# https://bugzilla.gnome.org/show_bug.cgi?id=789141
+Patch0: gtk3-gdk-Clear-GL-context-when-window-is-withdrawn.patch
+
BuildRequires: pkgconfig(atk) >= %{atk_version}
BuildRequires: pkgconfig(atk-bridge-2.0)
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
@@ -167,6 +170,7 @@ the functionality of the installed %{name} package.
%prep
%setup -q -n gtk+-%{version}
+%patch0 -p1
%build
export CFLAGS='-fno-strict-aliasing %optflags'
@@ -340,6 +344,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache &>/dev/null || :
%{_datadir}/installed-tests
%changelog
+* Wed Oct 25 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.22.24-3
+- Backport fix to prevent crashes when adding online accounts (GNOME #789141)
+
* Mon Oct 23 2017 Troy Dawson <tdawson@redhat.com> - 3.22.24-2
- Cleanup spec file conditionals
bgstack15