[gnome-session] Re-show the end session dialog when an inhibitor disappears



commit 7b15205dc7e0be6a7d4e8936be7470f09e7777e9
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Jun 18 15:19:40 2013 -0400

    Re-show the end session dialog when an inhibitor disappears
    
    The current code shows the dialog again when a client disappears.
    If we don't show the dialog again on inhibitor changes, we can get
    stuck in the query-end-session phase when applications take inhibitors
    without registering as a client. gedit does this, for example.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=702575

 gnome-session/gsm-manager.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)
---
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 45118ff..bcd4a7e 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -1905,15 +1905,24 @@ remove_inhibitors_for_connection (GsmManager *manager,
                                   const char *service_name)
 {
         RemoveClientData data;
+        guint count;
 
         data.service_name = service_name;
         data.manager = manager;
 
         debug_inhibitors (manager);
 
-        gsm_store_foreach_remove (manager->priv->inhibitors,
-                                  (GsmStoreFunc)inhibitor_has_bus_name,
-                                  &data);
+        count = gsm_store_foreach_remove (manager->priv->inhibitors,
+                                          (GsmStoreFunc)inhibitor_has_bus_name,
+                                          &data);
+        if (count > 0 &&
+            manager->priv->phase == GSM_MANAGER_PHASE_QUERY_END_SESSION) {
+                if (gsm_shell_is_running (manager->priv->shell)) {
+                        end_session_or_show_shell_dialog (manager);
+                } else {
+                        end_session_or_show_fallback_dialog (manager);
+                }
+        }
 }
 
 static void


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