[gnome-session] manager: don't ever show inhibitor dialog if logout is forced
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-session] manager: don't ever show inhibitor dialog if logout is forced
- Date: Sun, 7 Nov 2010 19:43:34 +0000 (UTC)
commit bf1b6e8843b5e72d4f5a62a34eb322b82e33c2df
Author: Ray Strode <rstrode redhat com>
Date: Sun Nov 7 11:49:33 2010 -0500
manager: don't ever show inhibitor dialog if logout is forced
If logout is forced, we don't want to show the inhibitor dialog.
A forced logout is one that shouldn't be "cancelable".
This commit prevents inhibitors from getting added if logout is
forced.
gnome-session/gsm-manager.c | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
---
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index c85cea6..d15402f 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -1193,6 +1193,12 @@ _on_query_end_session_timeout (GsmManager *manager)
g_warning ("Client '%s' failed to reply before timeout",
gsm_client_peek_id (l->data));
+ /* Don't add "not responding" inhibitors if logout is forced
+ */
+ if (manager->priv->forceful_logout) {
+ continue;
+ }
+
/* Add JIT inhibit for unresponsive client */
if (GSM_IS_DBUS_CLIENT (l->data)) {
bus_name = gsm_dbus_client_get_bus_name (l->data);
@@ -1248,8 +1254,8 @@ do_phase_query_end_session (GsmManager *manager)
(GsmStoreFunc)_client_query_end_session,
&data);
- /* This phase doesn't time out. This separate timer is only used to
- * show UI. */
+ /* This phase doesn't time out unless logout is forced. Typically, this
+ * separate timer is only used to show UI. */
manager->priv->query_timeout_id = g_timeout_add_seconds (1, (GSourceFunc)_on_query_end_session_timeout, manager);
}
@@ -1877,7 +1883,7 @@ on_client_end_session_response (GsmClient *client,
manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client);
- if (! is_ok) {
+ if (! is_ok && !manager->priv->forceful_logout) {
guint cookie;
GsmInhibitor *inhibitor;
char *app_id;
@@ -3172,6 +3178,18 @@ gsm_manager_inhibit (GsmManager *manager,
reason,
flags);
+ if (manager->priv->forceful_logout) {
+ GError *new_error;
+
+ new_error = g_error_new (GSM_MANAGER_ERROR,
+ GSM_MANAGER_ERROR_GENERAL,
+ "Forced logout cannot be inhibited");
+ g_debug ("GsmManager: Unable to inhibit: %s", new_error->message);
+ dbus_g_method_return_error (context, new_error);
+ g_error_free (new_error);
+ return FALSE;
+ }
+
if (IS_STRING_EMPTY (app_id)) {
GError *new_error;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]