Blame SOURCES/0002-manager-stop-transient-greeter-session-when-done-wit.patch

75a7a3
From 66250ce6402087d2e08f2008782edc02a0d013b0 Mon Sep 17 00:00:00 2001
75a7a3
From: Ray Strode <rstrode@redhat.com>
75a7a3
Date: Wed, 5 Apr 2017 12:11:20 -0400
75a7a3
Subject: [PATCH 2/2] manager: stop transient greeter session when done with it
75a7a3
75a7a3
If we're running in legacy display mode, we currently can
75a7a3
end up with a leaked greeter following user switching.
75a7a3
That can happen if a user with an already running session
75a7a3
is reauthenticated (so the login screen won't morph into the
75a7a3
use session).
75a7a3
75a7a3
This commit makes sure we kill the greeter session off in that
75a7a3
case.
75a7a3
---
75a7a3
 daemon/gdm-manager.c | 20 ++++++++++++++++++++
75a7a3
 1 file changed, 20 insertions(+)
75a7a3
75a7a3
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
75a7a3
index 6ffb842..9201b9f 100644
75a7a3
--- a/daemon/gdm-manager.c
75a7a3
+++ b/daemon/gdm-manager.c
75a7a3
@@ -2010,6 +2010,26 @@ on_session_reauthenticated (GdmSession *session,
75a7a3
                             GdmManager *manager)
75a7a3
 {
75a7a3
         gboolean fail_if_already_switched = FALSE;
75a7a3
+
75a7a3
+        if (gdm_session_get_display_mode (session) == GDM_SESSION_DISPLAY_MODE_REUSE_VT) {
75a7a3
+                const char *seat_id;
75a7a3
+                char *session_id;
75a7a3
+
75a7a3
+                seat_id = gdm_session_get_display_seat_id (session);
75a7a3
+                if (get_login_window_session_id (seat_id, &session_id)) {
75a7a3
+                        GdmDisplay *display = gdm_display_store_find (manager->priv->display_store,
75a7a3
+                                                                      lookup_by_session_id,
75a7a3
+                                                                      (gpointer) session_id);
75a7a3
+
75a7a3
+                        if (display != NULL) {
75a7a3
+                                gdm_display_stop_greeter_session (display);
75a7a3
+                                gdm_display_unmanage (display);
75a7a3
+                                gdm_display_finish (display);
75a7a3
+                        }
75a7a3
+                }
75a7a3
+                g_free (session_id);
75a7a3
+        }
75a7a3
+
75a7a3
         /* There should already be a session running, so jump to its
75a7a3
          * VT. In the event we're already on the right VT, (i.e. user
75a7a3
          * used an unlock screen instead of a user switched login screen),
75a7a3
-- 
75a7a3
1.8.3.1
75a7a3