[banshee] Initialize dbus threads (#867133)

Kalev Lember kalev at fedoraproject.org
Sat Mar 30 22:27:41 UTC 2013


commit 4e92ed0363b8649a29b025374496fab8a4ba7714
Author: Kalev Lember <kalevlember at gmail.com>
Date:   Sat Mar 30 23:02:16 2013 +0100

    Initialize dbus threads (#867133)
    
    https://bugzilla.gnome.org/show_bug.cgi?id=692374
    https://bugzilla.redhat.com/show_bug.cgi?id=867133

 banshee-2.6.0-dbus-threads.patch |   48 ++++++++++++++++++++++++++++++++++++++
 banshee.spec                     |   10 +++++++-
 2 files changed, 57 insertions(+), 1 deletions(-)
---
diff --git a/banshee-2.6.0-dbus-threads.patch b/banshee-2.6.0-dbus-threads.patch
new file mode 100644
index 0000000..5f5218a
--- /dev/null
+++ b/banshee-2.6.0-dbus-threads.patch
@@ -0,0 +1,48 @@
+From 459be46e3bd086deba369f367e6198d0b25f1a7c Mon Sep 17 00:00:00 2001
+From: Hans Petter Jansson <hpj at cl.no>
+Date: Tue, 26 Feb 2013 02:43:37 +0100
+Subject: [PATCH] Avoid race when using GConf and DBus with threads
+
+GConf causes us to make indirect calls to libdbus from multiple threads,
+resulting in crashes if left uninitialized. As a workaround, we initialize
+dbus-glib for multithreading.
+---
+ .../Banshee.Gui/GtkBaseClient.cs                   |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs b/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
+index c5c5675..1df06ad 100644
+--- a/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
++++ b/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
+@@ -28,6 +28,7 @@
+ 
+ using System;
+ using System.IO;
++using System.Runtime.InteropServices;
+ 
+ using Mono.Addins;
+ 
+@@ -100,6 +101,10 @@ namespace Banshee.Gui
+         {
+         }
+ 
++        internal const string LIBDBUSGLIB1 = "libdbus-glib-1.so.2";
++        [DllImport (LIBDBUSGLIB1, CallingConvention=CallingConvention.Cdecl, SetLastError=true)]
++        internal static extern void dbus_g_thread_init ();
++
+         protected virtual void InitializeGtk ()
+         {
+             Log.Debug ("Initializing GTK");
+@@ -107,6 +112,9 @@ namespace Banshee.Gui
+             if (!GLib.Thread.Supported) {
+                 GLib.Thread.Init ();
+             }
++
++            dbus_g_thread_init ();
++
+             Gtk.Application.Init ();
+ 
+             if (ApplicationContext.CommandLine.Contains ("debug-gtkrc")) {
+-- 
+1.7.7
+
diff --git a/banshee.spec b/banshee.spec
index 7f4b622..b55a8b0 100644
--- a/banshee.spec
+++ b/banshee.spec
@@ -6,7 +6,7 @@
 Name:    banshee
 Version: 2.6.0
 #Release: 0%{gitdate}git%{?dist}
-Release: 2%{?dist}
+Release: 3%{?dist}
 Summary: Easily import, manage, and play selections from your music collection
 
 Group:   Applications/Multimedia
@@ -23,6 +23,10 @@ Source1: README.Fedora
 # for snapshots only: don't run configure at the end of autogen.sh
 #Patch0:  %{name}-noconf.patch
 
+# https://bugzilla.gnome.org/show_bug.cgi?id=692374
+# https://bugzilla.redhat.com/show_bug.cgi?id=867133
+Patch1: banshee-2.6.0-dbus-threads.patch
+
 # Mono only available on these:
 ExclusiveArch: %{mono_arches}
 
@@ -144,6 +148,7 @@ developing applications that use %{name}-musicbrainz.
 #%setup -q -n %{name}-%{gitdate}
 # Snapshots only
 #%patch0 -p1 -b .noconf
+%patch1 -p1 -b .dbus_threads
 cp -p %{SOURCE1} .
 
 %build
@@ -228,6 +233,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 %{_libdir}/pkgconfig/banshee-musicbrainz.pc
 
 %changelog
+* Sat Mar 30 2013 Kalev Lember <kalevlember at gmail.com> - 2.6.0-3
+- Initialize dbus threads (#867133)
+
 * Wed Feb 13 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.6.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
 


More information about the scm-commits mailing list