Skip to content
Permalink
Browse files

manager: don't wait for all clients to exit before exiting

If a client gets hung up, we shouldn't hold up going to login screen.
It means making a bug in a single client break the desktop.

https://bugzilla.gnome.org/show_bug.cgi?id=750508
Adapted from https://gitlab.gnome.org/GNOME/gnome-session/commit/58c9323e
  • Loading branch information...
halfline authored and vkareh committed Mar 4, 2016
1 parent 2daa4af commit 0f4afbbdef79ce391455d246d62b403b6d0046f1
Showing with 2 additions and 18 deletions.
  1. +2 −18 mate-session/gsm-manager.c
@@ -609,15 +609,6 @@ app_registered (GsmApp *app,
}
}

static gboolean
_client_failed_to_stop (const char *id,
GsmClient *client,
gpointer user_data)
{
g_debug ("GsmManager: client failed to stop: %s, %s", gsm_client_peek_id (client), gsm_client_peek_app_id (client));
return FALSE;
}

static gboolean
on_phase_timeout (GsmManager *manager)
{
@@ -647,9 +638,6 @@ on_phase_timeout (GsmManager *manager)
case GSM_MANAGER_PHASE_END_SESSION:
break;
case GSM_MANAGER_PHASE_EXIT:
gsm_store_foreach (priv->clients,
(GsmStoreFunc)_client_failed_to_stop,
NULL);
break;
default:
g_assert_not_reached ();
@@ -907,16 +895,12 @@ do_phase_exit (GsmManager *manager)

priv = gsm_manager_get_instance_private (manager);
if (gsm_store_size (priv->clients) > 0) {
priv->phase_timeout_id = g_timeout_add_seconds (GSM_MANAGER_EXIT_PHASE_TIMEOUT,
(GSourceFunc)on_phase_timeout,
manager);

gsm_store_foreach (priv->clients,
(GsmStoreFunc)_client_stop,
NULL);
} else {
end_phase (manager);
}

end_phase (manager);
}

static gboolean

0 comments on commit 0f4afbb

Please sign in to comment.
You can’t perform that action at this time.