Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
systemd-mini.1059
0002-login-set-pos-slot-to-fallback-on-pos-evic...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch of Package systemd-mini.1059
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 src/login/logind-seat.c src/login/logind-seat.c index 36ec7ed..96cf08e 100644 --- src/login/logind-seat.c +++ 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.7.9.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor