|
|
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 |
|