GMenuModel exporter: remove workaround
authorRyan Lortie <desrt@desrt.ca>
Wed, 7 Dec 2011 15:35:29 +0000 (10:35 -0500)
committerRyan Lortie <desrt@desrt.ca>
Thu, 8 Dec 2011 23:05:15 +0000 (18:05 -0500)
With Bug 665733 fixed, we can remove the workaround (which was causing
thread safety problems).

gio/gmenuexporter.c

index 791ce6e..f0647bd 100644 (file)
@@ -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 */