From: Ryan Lortie Date: Wed, 7 Dec 2011 15:35:29 +0000 (-0500) Subject: GMenuModel exporter: remove workaround X-Git-Tag: 2.31.4~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=21aca44ee1c16bec9338fe3df1b285a9f0ffaf4a;p=platform%2Fupstream%2Fglib.git GMenuModel exporter: remove workaround With Bug 665733 fixed, we can remove the workaround (which was causing thread safety problems). --- diff --git a/gio/gmenuexporter.c b/gio/gmenuexporter.c index 791ce6e..f0647bd 100644 --- a/gio/gmenuexporter.c +++ b/gio/gmenuexporter.c @@ -770,12 +770,11 @@ g_menu_exporter_create_group (GMenuExporter *exporter) return group; } - -static GMenuExporter *g_menu_exporter_to_free; - static void -g_menu_exporter_actually_free (GMenuExporter *exporter) +g_menu_exporter_free (gpointer user_data) { + GMenuExporter *exporter = user_data; + g_menu_exporter_menu_free (exporter->root); g_hash_table_unref (exporter->remotes); g_hash_table_unref (exporter->groups); @@ -786,20 +785,6 @@ g_menu_exporter_actually_free (GMenuExporter *exporter) } static void -g_menu_exporter_free (gpointer user_data) -{ - /* XXX: hack - * - * GDBusConnection calls the destroy notify while holding its own lock - * which means that we get a deadlock on re-entering it. - * - * Work around this for now... - */ - g_assert (g_menu_exporter_to_free == NULL); - g_menu_exporter_to_free = user_data; -} - -static void g_menu_exporter_method_call (GDBusConnection *connection, const gchar *sender, const gchar *object_path, @@ -903,12 +888,7 @@ void g_dbus_connection_unexport_menu_model (GDBusConnection *connection, guint export_id) { - if (!g_dbus_connection_unregister_object (connection, export_id)) - return; - - g_assert (g_menu_exporter_to_free != NULL); - g_menu_exporter_actually_free (g_menu_exporter_to_free); - g_menu_exporter_to_free = NULL; + g_dbus_connection_unregister_object (connection, export_id); } /* {{{1 Epilogue */