gnome-session r4882 - in branches/dbus_based: . gnome-session
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-session r4882 - in branches/dbus_based: . gnome-session
- Date: Tue, 29 Jul 2008 20:36:43 +0000 (UTC)
Author: mccann
Date: Tue Jul 29 20:36:43 2008
New Revision: 4882
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4882&view=rev
Log:
2008-07-29 William Jon McCann <jmccann redhat com>
* gnome-session/gsm-manager.c (_disconnect_client),
(_disconnect_dbus_client), (remove_clients_for_connection),
(on_client_disconnected):
Don't remove clients from the iterator func. Set
client status when disconnecting.
Modified:
branches/dbus_based/ChangeLog
branches/dbus_based/gnome-session/gsm-manager.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 Tue Jul 29 20:36:43 2008
@@ -980,8 +980,8 @@
}
static void
-disconnect_client (GsmManager *manager,
- GsmClient *client)
+_disconnect_client (GsmManager *manager,
+ GsmClient *client)
{
gboolean is_condition_client;
GsmApp *app;
@@ -991,12 +991,12 @@
gboolean app_restart;
GsmClientRestartStyle client_restart_hint;
- g_debug ("GsmManager: disconnect client");
+ g_debug ("GsmManager: disconnect client: %s", gsm_client_peek_id (client));
/* take a ref so it doesn't get finalized */
g_object_ref (client);
- gsm_store_remove (manager->priv->clients, gsm_client_peek_id (client));
+ gsm_client_set_status (client, GSM_CLIENT_FINISHED);
is_condition_client = FALSE;
if (g_slist_find (manager->priv->condition_clients, client)) {
@@ -1049,12 +1049,6 @@
out:
g_object_unref (client);
-
- if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION
- && gsm_store_size (manager->priv->clients) == 0) {
- g_debug ("GsmManager: last client disconnected - exiting");
- end_phase (manager);
- }
}
typedef struct {
@@ -1079,7 +1073,8 @@
}
if (strcmp (data->service_name, name) == 0) {
- disconnect_client (data->manager, client);
+ _disconnect_client (data->manager, client);
+ return TRUE;
}
return FALSE;
@@ -1095,9 +1090,15 @@
data.manager = manager;
/* disconnect dbus clients for name */
- gsm_store_foreach (manager->priv->clients,
- (GsmStoreFunc)_disconnect_dbus_client,
- &data);
+ gsm_store_foreach_remove (manager->priv->clients,
+ (GsmStoreFunc)_disconnect_dbus_client,
+ &data);
+
+ if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION
+ && gsm_store_size (manager->priv->clients) == 0) {
+ g_debug ("GsmManager: last client disconnected - exiting");
+ end_phase (manager);
+ }
}
static gboolean
@@ -1280,7 +1281,13 @@
GsmManager *manager)
{
g_debug ("GsmManager: disconnect client");
- disconnect_client (manager, client);
+ _disconnect_client (manager, client);
+ gsm_store_remove (manager->priv->clients, gsm_client_peek_id (client));
+ if (manager->priv->phase >= GSM_MANAGER_PHASE_QUERY_END_SESSION
+ && gsm_store_size (manager->priv->clients) == 0) {
+ g_debug ("GsmManager: last client disconnected - exiting");
+ end_phase (manager);
+ }
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]