summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <halfline@gmail.com>2019-08-13 19:43:34 +0000
committerRay Strode <halfline@gmail.com>2019-08-13 19:43:34 +0000
commit1e1ad8c170e125bb8d709c1b640abcb7e76334dc (patch)
tree0e53ee74132b68f1cfb6cb7850715960ce38eeef
parent04d0d82a9cc56d4bf769b320ebd9369da0ea4a66 (diff)
parent422647b7c9a347fe3b293d4b4c44eceb51e44074 (diff)
downloadgdm-1e1ad8c170e125bb8d709c1b640abcb7e76334dc.tar.gz
Merge branch 'wip/vt-fix' into 'master'
session-worker: don't take control of a vt just because we're changing to it See merge request GNOME/gdm!77
-rw-r--r--daemon/gdm-session-worker.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index cc565a4c..aa824bcf 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -664,7 +664,7 @@ gdm_session_worker_process_pam_message (GdmSessionWorker *worker,
char *user_answer;
gboolean res;
char *utf8_msg;
- char *msg;
+ char *msg;
if (response != NULL) {
*response = NULL;
@@ -954,7 +954,8 @@ out:
static void
jump_to_vt (GdmSessionWorker *worker,
- int vt_number)
+ int vt_number,
+ gboolean take_control)
{
int fd;
int active_vt_tty_fd;
@@ -990,7 +991,8 @@ jump_to_vt (GdmSessionWorker *worker,
fd = active_vt_tty_fd;
}
- handle_terminal_vt_switches (worker, fd);
+ if (take_control)
+ handle_terminal_vt_switches (worker, fd);
if (ioctl (fd, VT_GETSTATE, &vt_state) < 0) {
g_debug ("GdmSessionWorker: couldn't get current VT: %m");
@@ -1053,7 +1055,7 @@ gdm_session_worker_uninitialize_pam (GdmSessionWorker *worker,
if (g_strcmp0 (worker->priv->display_seat_id, "seat0") == 0) {
if (worker->priv->login_vt != worker->priv->session_vt) {
- jump_to_vt (worker, worker->priv->login_vt);
+ jump_to_vt (worker, worker->priv->login_vt, FALSE);
}
}
@@ -2007,7 +2009,7 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
* ready, and in the reuse server case, we're already on the correct VT. */
if (g_strcmp0 (worker->priv->display_seat_id, "seat0") == 0) {
if (worker->priv->display_mode == GDM_SESSION_DISPLAY_MODE_NEW_VT) {
- jump_to_vt (worker, worker->priv->session_vt);
+ jump_to_vt (worker, worker->priv->session_vt, TRUE);
}
}