chiark / gitweb /
login: pause devices before acknowledging VT switches
authorDavid Herrmann <dh.herrmann@gmail.com>
Fri, 19 Sep 2014 11:26:39 +0000 (13:26 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Fri, 19 Sep 2014 11:26:39 +0000 (13:26 +0200)
commit2ec3ff668ff03410e94cfef8e3ee9384a8222211
tree37c90b9fff244178098d83f05b337a439d3a1168
parent16115b0a7b7cdf08fb38084d857d572d8a9088dc
login: pause devices before acknowledging VT switches

If a session controller does not need synchronous VT switches, we allow
them to pass VT control to logind, which acknowledges all VT switches
unconditionally. This works fine with all sessions using the dbus API,
but causes out-of-sync device use if we switch to legacy sessions that
are notified via VT signals. Those are processed before logind notices
the session-switch via sysfs. Therefore, leaving the old session still
active for a short amount of time.

This, in fact, may cause the legacy session to prepare graphics devices
before the old session was deactivated, and thus, maybe causing the old
session to interfer with graphics device usage.

Fix this by releasing devices immediately before acknowledging VT
switches. This way, sessions without VT handlers are required to support
async session switching (which they do in that case, anyway).
src/login/logind-session.c
src/login/logind-session.h
src/login/logind.c