[gtk3/f18] Add upstream patch to make Epiphany less painful to use

Bastien Nocera hadess at fedoraproject.org
Fri Oct 12 07:56:51 UTC 2012


commit b1d2b33b967272e08c715072177fda318291e11f
Author: Bastien Nocera <hadess at hadess.net>
Date:   Fri Oct 12 09:55:33 2012 +0200

    Add upstream patch to make Epiphany less painful to use

 ...ke-process_all_updates-draw-synchronously.patch |   42 ++++++++++++++++++++
 gtk3.spec                                          |    8 +++-
 2 files changed, 49 insertions(+), 1 deletions(-)
---
diff --git a/0001-Make-process_all_updates-draw-synchronously.patch b/0001-Make-process_all_updates-draw-synchronously.patch
new file mode 100644
index 0000000..35cb4c9
--- /dev/null
+++ b/0001-Make-process_all_updates-draw-synchronously.patch
@@ -0,0 +1,42 @@
+From 83c66c9c2cf6bf411f7d5ae3c89259203626173a Mon Sep 17 00:00:00 2001
+From: Alexander Larsson <alexl at redhat.com>
+Date: Mon, 1 Oct 2012 10:02:01 +0200
+Subject: [PATCH] Make process_all_updates draw synchronously
+
+By calling XSync in _gdk_x11_display_after_process_all_updates we
+effectively make gdk rendering sync, which avoids problems with the
+client animations running faster than the Xserver rendering, thus
+filling up the X rendering pipes and essentially "locking up" the
+Xserver (i.e. you can't even close the offending window because the
+WM is starved too).
+
+I verified this worked by making GtkSpinner paint multiple times on my
+intel driver (which has some issue making this rendering slow atm),
+and without this patch i get severe lag where even window dragging
+stops for 5 seconds when i drag the mouse around. However, with the
+patch everything is smooth.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=684639
+---
+ gdk/x11/gdkwindow-x11.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
+index 4ef6f46..e4b880f 100644
+--- a/gdk/x11/gdkwindow-x11.c
++++ b/gdk/x11/gdkwindow-x11.c
+@@ -4858,6 +4858,11 @@ _gdk_x11_display_before_process_all_updates (GdkDisplay *display)
+ void
+ _gdk_x11_display_after_process_all_updates (GdkDisplay *display)
+ {
++  /* Sync after all drawing, otherwise the client can get "ahead" of
++     the server rendering during animations, such that we fill up
++     the Xserver pipes with sync rendering ops not letting other
++     clients (including the VM) do anything. */
++  XSync (GDK_DISPLAY_XDISPLAY (display), FALSE);
+ }
+ 
+ static Bool
+-- 
+1.7.12.1
+
diff --git a/gtk3.spec b/gtk3.spec
index fcf7896..a101eda 100644
--- a/gtk3.spec
+++ b/gtk3.spec
@@ -10,7 +10,7 @@
 Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X
 Name: gtk3
 Version: 3.6.0
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: LGPLv2+
 Group: System Environment/Libraries
 URL: http://www.gtk.org
@@ -54,6 +54,8 @@ Requires: libXrandr >= %{xrandr_version}
 # gtk3 no longer provides the GtkThemeEngine interface used there
 Obsoletes: gtk3-engines <= 2.91.5-5.fc15
 
+Patch0: 0001-Make-process_all_updates-draw-synchronously.patch
+
 %description
 GTK+ is a multi-platform toolkit for creating graphical user
 interfaces. Offering a complete set of widgets, GTK+ is suitable for
@@ -111,6 +113,7 @@ widget toolkit.
 
 %prep
 %setup -q -n gtk+-%{version}
+%patch0 -p1 -b .sync-updates
 
 %build
 
@@ -245,6 +248,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache
 %{_datadir}/gtk-doc
 
 %changelog
+* Fri Oct 12 2012 Bastien Nocera <bnocera at redhat.com> 3.6.0-2
+- Add upstream patch to make Epiphany less painful to use
+
 * Tue Sep 25 2012 Cosimo Cecchi <cosimoc at redhat.com> - 3.6.0-1
 - Update to 3.6.0
 


More information about the scm-commits mailing list