From b1d2b33b967272e08c715072177fda318291e11f Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Oct 12 2012 07:55:33 +0000 Subject: Add upstream patch to make Epiphany less painful to use --- 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 +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 3.6.0-2 +- Add upstream patch to make Epiphany less painful to use + * Tue Sep 25 2012 Cosimo Cecchi - 3.6.0-1 - Update to 3.6.0