[glib/wip/gmenu] GMenuModel exporter: remove workaround



commit c6ca50a37cf4d062ae7a981b308554affa69232d
Author: Ryan Lortie <desrt desrt ca>
Date:   Wed Dec 7 10:35:29 2011 -0500

    GMenuModel exporter: remove workaround
    
    With Bug 665733 fixed, we can remove the workaround (which was causing
    thread safety problems).

 gio/gmenuexporter.c |   28 ++++------------------------
 1 files changed, 4 insertions(+), 24 deletions(-)
---
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 */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]