[audacious-plugins] Fix the skinned ui drawing only the skin background on F20+

Hans de Goede jwrdegoede at fedoraproject.org
Tue Aug 27 08:15:46 UTC 2013


commit 3583f9b3129524fbefd6e8705e8ce00cf1010b65
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Tue Aug 27 10:15:35 2013 +0200

    Fix the skinned ui drawing only the skin background on F20+

 0001-skins-Properly-propagate-draws.patch |   44 +++++++++++++++++++++++++++++
 audacious-plugins.spec                    |    9 +++++-
 2 files changed, 52 insertions(+), 1 deletions(-)
---
diff --git a/0001-skins-Properly-propagate-draws.patch b/0001-skins-Properly-propagate-draws.patch
new file mode 100644
index 0000000..61919b0
--- /dev/null
+++ b/0001-skins-Properly-propagate-draws.patch
@@ -0,0 +1,44 @@
+From bd8c001ce7211f83491de3bd37d5e29daad3c283 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Tue, 27 Aug 2013 09:11:42 +0200
+Subject: [PATCH] skins: Properly propagate draws
+
+gtk only guarantees expose events / emitting the draw signal for widgets which
+are backed by a native (ie X11) window, and the various GtkDrawingArea widgets
+the skinned ui uses are not backed by a native window.
+
+For non native window backed widgets, it is up to the parent / container
+which does have a native window to propagate the draws. This means that
+when audacious connects to the draw signal of the GtkWindow-s it uses,
+overriding the default handler, it must propagate the draw to its children.
+
+So far audacious has been getting away with not doing this since gtk was
+handling sending expose events with a shotgun approach sending them
+to all children of an exposed widget unconditionally. This has been fixed
+in gtk 3.9.x / 3.10, which causes the audacious skinned ui to only draw the
+window background, and nothing else, this patch fixes this.
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ src/skins/ui_skinned_window.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/skins/ui_skinned_window.c b/src/skins/ui_skinned_window.c
+index 3f23c44..d7695f8 100644
+--- a/src/skins/ui_skinned_window.c
++++ b/src/skins/ui_skinned_window.c
+@@ -35,6 +35,11 @@ DRAW_FUNC_BEGIN (window_draw)
+ 
+     if (data->draw)
+         data->draw (wid, cr);
++
++    if (data->is_shaded)
++        gtk_container_propagate_draw ((GtkContainer *) wid, data->shaded, cr);
++    else
++        gtk_container_propagate_draw ((GtkContainer *) wid, data->normal, cr);
+ DRAW_FUNC_END
+ 
+ static gboolean window_button_press (GtkWidget * window, GdkEventButton * event)
+-- 
+1.8.3.1
+
diff --git a/audacious-plugins.spec b/audacious-plugins.spec
index 291d971..e3edb47 100644
--- a/audacious-plugins.spec
+++ b/audacious-plugins.spec
@@ -11,7 +11,7 @@
 
 Name: audacious-plugins
 Version: 3.4
-Release: 2%{?dist}
+Release: 3%{?dist}
 Summary: Plugins for the Audacious audio player
 Group: Applications/Multimedia
 URL: http://audacious-media-player.org/
@@ -28,6 +28,9 @@ Patch0: audacious-plugins-3.0-alpha1-xmms-skindir.patch
 Patch1: audacious-plugins-3.4-beta2-enable-gnomeshortcuts.patch
 # Fedora customization: add default system-wide module_path
 Patch2: audacious-plugins-3.1-beta1-ladspa.patch
+# gtk-3.9+ triggers an audacious bug, breaking the skinned ui, filed upstream:
+# http://redmine.audacious-media-player.org/issues/336
+Patch3: 0001-skins-Properly-propagate-draws.patch
 
 BuildRequires: audacious-devel >= %{aud_ver}
 BuildRequires: gettext-devel
@@ -121,6 +124,7 @@ input plugin for Audacious.
 %patch0 -p1 -b .xmms-skindir
 %patch1 -p1 -b .enable-gnomeshortcuts
 %patch2 -p1 -b .ladspa
+%patch3 -p1
 
 for i in src/ladspa/plugin.c
 do
@@ -233,6 +237,9 @@ make install DESTDIR=${RPM_BUILD_ROOT} INSTALL="install -p"
 
 
 %changelog
+* Tue Aug 27 2013 Hans de Goede <hdegoede at redhat.com> - 3.4-3
+- Fix the skinned ui drawing only the skin background on F20+
+
 * Sat Aug 03 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.4-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
 


More information about the scm-commits mailing list