From e9d06b56a54dcd399d1d3eaaf62bdacb7e07084d Mon Sep 17 00:00:00 2001 From: Mirco Bauer Date: Sat, 2 Mar 2013 13:44:46 +0100 Subject: [PATCH] Explicitly initialize D-Bus GLib threading When gconf was switched from orbit to dbus it was no longer thread-safe by default. This behavior can only get back by explicitly initializing dbus-glib's threads. This issue affects multi-threaded GConf# users like Banshee leading them to SEGVs. For more details see: https://bugzilla.gnome.org/show_bug.cgi?id=683830 --- gconf/GConf/Client.cs | 11 +++++++++++ gconf/GConf/gconf-sharp.dll.config.in | 1 + 2 files changed, 12 insertions(+) diff --git a/gconf/GConf/Client.cs b/gconf/GConf/Client.cs index b8cc881..64efc9f 100644 --- a/gconf/GConf/Client.cs +++ b/gconf/GConf/Client.cs @@ -31,6 +31,17 @@ namespace GConf [DllImport("gconf-2")] static extern IntPtr gconf_client_get_default (); + [DllImport("dbus-glib-1")] + static extern void dbus_g_thread_init (); + + static Client () + { + // HACK: we have to initialize dbus' threading else GConf with its + // dbus backend will not be thread safe and SEGVs in our face, see: + // https://bugzilla.gnome.org/show_bug.cgi?id=683830 + dbus_g_thread_init(); + } + public Client () { Initialize (); diff --git a/gconf/GConf/gconf-sharp.dll.config.in b/gconf/GConf/gconf-sharp.dll.config.in index 9fb7d15..f20ddae 100644 --- a/gconf/GConf/gconf-sharp.dll.config.in +++ b/gconf/GConf/gconf-sharp.dll.config.in @@ -1,3 +1,4 @@ + -- 1.7.10.4