summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2015-07-16 18:18:01 +0200
committerDavid Herrmann <dh.herrmann@gmail.com>2015-07-16 18:23:55 +0200
commitda770c386f8cc6efd3430ebab4e0707a4bb06c16 (patch)
treef05de1a8f190e9511e9665732024673d85cbf4f5
parent0a010a05d36c990bc0755f95c17edb2230b0216b (diff)
logind: prefer new sessions over older ones on VT switches
Our seat->positions[] array keeps track of the 'preferred' session on a VT. The only situation this is used, is to select the session to activate when a VT is activated. In the normal case, there's only one session per VT so the selection is trivial. Older greeters, however, implement take-overs when they start sessions on the same VT that the greeter ran on. We recently limited such take-overs to VTs where a greeter is running on, to force people to never share VTs in new code that is written. For legacy reasons, we need to be compatible to old greeters, though. Hence, we allow those greeters to implement take-over. In such take-overs, however, we should really make sure that the new sessions gets preferred over the old one under all circumstances. Hence, make sure we override the previous preferred session with a new session.
-rw-r--r--src/login/logind-seat.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
index 9d5287ad35..1179ce937e 100644
--- a/src/login/logind-seat.c
+++ b/src/login/logind-seat.c
@@ -505,7 +505,7 @@ void seat_claim_position(Seat *s, Session *session, unsigned int pos) {
seat_evict_position(s, session);
session->position = pos;
- if (pos > 0 && !s->positions[pos])
+ if (pos > 0)
s->positions[pos] = session;
}