gnome-session r4861 - in branches/dbus_based: . gnome-session



Author: mccann
Date: Sun Jul 27 20:04:24 2008
New Revision: 4861
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4861&view=rev

Log:
2008-07-27  William Jon McCann  <jmccann redhat com>

	* gnome-session/gsm-manager.c (gsm_manager_class_init):
	* gnome-session/gsm-store.c (gsm_store_remove),
	(foreach_remove_wrapper), (gsm_store_foreach_remove):
	* gnome-session/gsm-xsmp-server.c (accept_ice_connection),
	(gsm_xsmp_server_finalize):
	Emit removed signal after removing from store.



Modified:
   branches/dbus_based/ChangeLog
   branches/dbus_based/gnome-session/gsm-manager.c
   branches/dbus_based/gnome-session/gsm-store.c
   branches/dbus_based/gnome-session/gsm-xsmp-server.c

Modified: branches/dbus_based/gnome-session/gsm-manager.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-manager.c	(original)
+++ branches/dbus_based/gnome-session/gsm-manager.c	Sun Jul 27 20:04:24 2008
@@ -111,8 +111,6 @@
         PHASE_CHANGED,
         SESSION_RUNNING,
         SESSION_OVER,
-        CLIENT_ADDED,
-        CLIENT_REMOVED,
         LAST_SIGNAL
 };
 
@@ -1860,27 +1858,6 @@
                               G_TYPE_NONE,
                               0);
 
-        signals [CLIENT_ADDED] =
-                g_signal_new ("client-added",
-                              G_TYPE_FROM_CLASS (object_class),
-                              G_SIGNAL_RUN_LAST,
-                              G_STRUCT_OFFSET (GsmManagerClass, client_added),
-                              NULL,
-                              NULL,
-                              g_cclosure_marshal_VOID__STRING,
-                              G_TYPE_NONE,
-                              1, G_TYPE_STRING);
-        signals [CLIENT_REMOVED] =
-                g_signal_new ("client-removed",
-                              G_TYPE_FROM_CLASS (object_class),
-                              G_SIGNAL_RUN_LAST,
-                              G_STRUCT_OFFSET (GsmManagerClass, client_removed),
-                              NULL,
-                              NULL,
-                              g_cclosure_marshal_VOID__STRING,
-                              G_TYPE_NONE,
-                              1, G_TYPE_STRING);
-
         g_object_class_install_property (object_class,
                                          PROP_FAILSAFE,
                                          g_param_spec_boolean ("failsafe",

Modified: branches/dbus_based/gnome-session/gsm-store.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-store.c	(original)
+++ branches/dbus_based/gnome-session/gsm-store.c	Sun Jul 27 20:04:24 2008
@@ -90,11 +90,15 @@
                 return FALSE;
         }
 
-        g_signal_emit (store, signals [REMOVED], 0, id);
+        g_object_ref (found);
 
         removed = g_hash_table_remove (store->priv->objects, id);
         g_assert (removed);
 
+        g_signal_emit (store, signals [REMOVED], 0, id);
+
+        g_object_unref (found);
+
         return TRUE;
 }
 
@@ -147,6 +151,7 @@
         GsmStoreFunc func;
         gpointer     user_data;
         GsmStore    *store;
+        GList       *removed;
 } WrapperData;
 
 static gboolean
@@ -158,7 +163,7 @@
 
         res = (data->func) (id, object, data->user_data);
         if (res) {
-                g_signal_emit (data->store, signals [REMOVED], 0, id);
+                data->removed = g_list_prepend (data->removed, g_strdup (id));
         }
 
         return res;
@@ -178,11 +183,20 @@
         data.store = store;
         data.user_data = user_data;
         data.func = func;
+        data.removed = NULL;
 
         ret = g_hash_table_foreach_remove (store->priv->objects,
                                            (GHRFunc)foreach_remove_wrapper,
                                            &data);
 
+        while (data.removed != NULL) {
+                char *id;
+                id = data.removed->data;
+                g_signal_emit (store, signals [REMOVED], 0, id);
+                g_free (id);
+                data.removed = g_list_delete_link (data.removed, data.removed);
+        }
+
         return ret;
 }
 

Modified: branches/dbus_based/gnome-session/gsm-xsmp-server.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-xsmp-server.c	(original)
+++ branches/dbus_based/gnome-session/gsm-xsmp-server.c	Sun Jul 27 20:04:24 2008
@@ -126,7 +126,7 @@
         client = gsm_xsmp_client_new (ice_conn);
         ice_conn->context = client;
 
-        gsm_store_add (server->priv->client_store, gsm_client_get_id (client), client);
+        gsm_store_add (server->priv->client_store, gsm_client_get_id (client), G_OBJECT (client));
 
         return TRUE;
 }
@@ -608,8 +608,6 @@
                 g_object_unref (xsmp_server->priv->client_store);
         }
 
-        /* FIXME */
-
         G_OBJECT_CLASS (gsm_xsmp_server_parent_class)->finalize (object);
 }
 



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