diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-03-17 03:42:22 +0000 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-03-17 03:42:22 +0000 |
commit | d8fdc79f0eff1e0a0c630ec38a5792640c0f8311 (patch) | |
tree | efb83c2c44bb7e9057d3d83cbc5e664c98596e4d /core/systemd/0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch | |
parent | dac65ee415245f1e492217dd3a3e1ea6d04a29ff (diff) |
Mon Mar 17 03:39:34 UTC 2014
Diffstat (limited to 'core/systemd/0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch')
-rw-r--r-- | core/systemd/0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/core/systemd/0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch b/core/systemd/0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch deleted file mode 100644 index f499ed2c0..000000000 --- a/core/systemd/0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 3e6b205f81e743c7354ccbc69eb45afbdbebe2dc Mon Sep 17 00:00:00 2001 -From: David Herrmann <dh.herrmann@gmail.com> -Date: Tue, 25 Feb 2014 13:08:24 +0100 -Subject: [PATCH] login: set pos-slot to fallback on pos-eviction - -If we evict a session position, we open the position slot for future -sessions. However, there might already be another session on the same -position if both were started on the same VT. This is currently done if -gdm spawns the session on its own Xserver. - -Hence, look for such a session on pos-eviction and claim the new slot -immediately. ---- - src/login/logind-seat.c | 14 +++++++++++++- - 1 file changed, 13 insertions(+), 1 deletion(-) - -diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c -index 36ec7ed..96cf08e 100644 ---- a/src/login/logind-seat.c -+++ b/src/login/logind-seat.c -@@ -459,6 +459,7 @@ int seat_stop_sessions(Seat *s, bool force) { - } - - void seat_evict_position(Seat *s, Session *session) { -+ Session *iter; - unsigned int pos = session->pos; - - session->pos = 0; -@@ -466,8 +467,19 @@ void seat_evict_position(Seat *s, Session *session) { - if (!pos) - return; - -- if (pos < s->position_count && s->positions[pos] == session) -+ if (pos < s->position_count && s->positions[pos] == session) { - s->positions[pos] = NULL; -+ -+ /* There might be another session claiming the same -+ * position (eg., during gdm->session transition), so lets look -+ * for it and set it on the free slot. */ -+ LIST_FOREACH(sessions_by_seat, iter, s->sessions) { -+ if (iter->pos == pos) { -+ s->positions[pos] = iter; -+ break; -+ } -+ } -+ } - } - - void seat_claim_position(Seat *s, Session *session, unsigned int pos) { --- -1.9.0 - |