Blame SOURCES/0001-gsm-manager-Don-t-abort-when-all-clients-exit.patch

cec674
From 7d333c2eff424bfae19ca6ca59835fd65fb919cc Mon Sep 17 00:00:00 2001
cec674
From: Colin Walters <walters@verbum.org>
cec674
Date: Fri, 18 Oct 2013 18:15:14 -0400
cec674
Subject: [PATCH] gsm-manager: Don't abort when all clients exit
cec674
cec674
If all of our clients exit, remove_clients_for_connection()
cec674
calls end_phase() which in turn invokes gsm_manager_quit() that
cec674
checks the logout type.
cec674
cec674
But at this point we only have _LOGOUT_NONE, so we end up aborting.
cec674
It's fine to just call _quit() in this case, and this avoids us
cec674
dumping core.
cec674
cec674
This was happening to me when session startup failed for other
cec674
reasons.
cec674
cec674
https://bugzilla.gnome.org/show_bug.cgi?id=710480
cec674
---
cec674
 gnome-session/gsm-manager.c | 1 +
cec674
 1 file changed, 1 insertion(+)
cec674
cec674
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
cec674
index f6ccb62..57cbb36 100644
cec674
--- a/gnome-session/gsm-manager.c
cec674
+++ b/gnome-session/gsm-manager.c
cec674
@@ -465,60 +465,61 @@ phase_num_to_name (guint phase)
cec674
         case GSM_MANAGER_PHASE_RUNNING:
cec674
                 name = "RUNNING";
cec674
                 break;
cec674
         case GSM_MANAGER_PHASE_QUERY_END_SESSION:
cec674
                 name = "QUERY_END_SESSION";
cec674
                 break;
cec674
         case GSM_MANAGER_PHASE_END_SESSION:
cec674
                 name = "END_SESSION";
cec674
                 break;
cec674
         case GSM_MANAGER_PHASE_EXIT:
cec674
                 name = "EXIT";
cec674
                 break;
cec674
         default:
cec674
                 g_assert_not_reached ();
cec674
                 break;
cec674
         }
cec674
 
cec674
         return name;
cec674
 }
cec674
 
cec674
 static void start_phase (GsmManager *manager);
cec674
 
cec674
 static void
cec674
 gsm_manager_quit (GsmManager *manager)
cec674
 {
cec674
         /* See the comment in request_reboot() for some more details about how
cec674
          * this works. */
cec674
 
cec674
         switch (manager->priv->logout_type) {
cec674
         case GSM_MANAGER_LOGOUT_LOGOUT:
cec674
+        case GSM_MANAGER_LOGOUT_NONE:
cec674
                 gtk_main_quit ();
cec674
                 break;
cec674
         case GSM_MANAGER_LOGOUT_REBOOT:
cec674
         case GSM_MANAGER_LOGOUT_REBOOT_INTERACT:
cec674
                 gdm_set_logout_action (GDM_LOGOUT_ACTION_NONE);
cec674
                 gsm_system_complete_shutdown (manager->priv->system);
cec674
                 break;
cec674
         case GSM_MANAGER_LOGOUT_REBOOT_GDM:
cec674
                 gdm_set_logout_action (GDM_LOGOUT_ACTION_REBOOT);
cec674
                 gtk_main_quit ();
cec674
                 break;
cec674
         case GSM_MANAGER_LOGOUT_SHUTDOWN:
cec674
         case GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT:
cec674
                 gdm_set_logout_action (GDM_LOGOUT_ACTION_NONE);
cec674
                 gsm_system_complete_shutdown (manager->priv->system);
cec674
                 break;
cec674
         case GSM_MANAGER_LOGOUT_SHUTDOWN_GDM:
cec674
                 gdm_set_logout_action (GDM_LOGOUT_ACTION_SHUTDOWN);
cec674
                 gtk_main_quit ();
cec674
                 break;
cec674
         default:
cec674
                 g_assert_not_reached ();
cec674
                 break;
cec674
         }
cec674
 }
cec674
 
cec674
 static gboolean do_query_end_session_exit (GsmManager *manager);
cec674
 
cec674
 static void
cec674
 end_phase (GsmManager *manager)
cec674
-- 
cec674
1.8.4.2
cec674