summaryrefslogtreecommitdiff
path: root/src/login
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-08-06 19:02:29 +0200
committerLennart Poettering <lennart@poettering.net>2018-10-13 12:59:29 +0200
commit04857cd801022d9f9933efb484c6253572f09870 (patch)
tree75fcc302ced226a270c4e1e1c5f990a716312e9e /src/login
parentbd26aee1f6bea13fe25b3feb2a5e9cd1be522e7e (diff)
downloadsystemd-04857cd801022d9f9933efb484c6253572f09870.tar.gz
logind: never elect a session that is stopping as display
Diffstat (limited to 'src/login')
-rw-r--r--src/login/logind-user.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index 38a45da1dd..cb0cc30047 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -614,11 +614,10 @@ int user_kill(User *u, int signo) {
}
static bool elect_display_filter(Session *s) {
- /* Return true if the session is a candidate for the user’s ‘primary
- * session’ or ‘display’. */
+ /* Return true if the session is a candidate for the user’s ‘primary session’ or ‘display’. */
assert(s);
- return (s->class == SESSION_USER && !s->stopping);
+ return s->class == SESSION_USER && s->started && !s->stopping;
}
static int elect_display_compare(Session *s1, Session *s2) {
@@ -664,9 +663,8 @@ void user_elect_display(User *u) {
assert(u);
- /* This elects a primary session for each user, which we call
- * the "display". We try to keep the assignment stable, but we
- * "upgrade" to better choices. */
+ /* This elects a primary session for each user, which we call the "display". We try to keep the assignment
+ * stable, but we "upgrade" to better choices. */
log_debug("Electing new display for user %s", u->name);
LIST_FOREACH(sessions_by_user, s, u->sessions) {