Skip to content

Commit

Permalink
manager: don't wait for all clients to exit before exiting
Browse files Browse the repository at this point in the history
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 Feb 4, 2019
1 parent 2daa4af commit 0f4afbb
Showing 1 changed file with 2 additions and 18 deletions.
20 changes: 2 additions & 18 deletions mate-session/gsm-manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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 ();
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 0f4afbb

Please sign in to comment.