From ec9e1bf9a32eff8f2c9dca94a0946f330914cfd0 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Sun, 2 Dec 2012 15:24:13 +0100 Subject: [PATCH] seat: fix rescheduling sessions if none is active If no session is active, we must not choose the scheduled session as start-place. Otherwise, we will not schedule any session because the start-session isn't used in the iteration. Signed-off-by: David Herrmann --- src/kmscon_seat.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/kmscon_seat.c b/src/kmscon_seat.c index b897b95..6b4d9ce 100644 --- a/src/kmscon_seat.c +++ b/src/kmscon_seat.c @@ -412,17 +412,16 @@ static void seat_next(struct kmscon_seat *seat) if (seat->current_sess) cur = &seat->current_sess->list; - else if (seat->scheduled_sess) - cur = &seat->scheduled_sess->list; else if (seat->session_count) cur = &seat->sessions; else return; - if (seat->current_sess) - next = NULL; - else + next = NULL; + if (!seat->current_sess && seat->dummy_sess && + seat->dummy_sess->enabled) next = seat->dummy_sess; + shl_dlist_for_each_but_one(iter, cur, &seat->sessions) { s = shl_dlist_entry(iter, struct kmscon_session, list); if (!s->enabled || seat->dummy_sess == s) @@ -446,17 +445,16 @@ static void seat_prev(struct kmscon_seat *seat) if (seat->current_sess) cur = &seat->current_sess->list; - else if (seat->scheduled_sess) - cur = &seat->scheduled_sess->list; else if (seat->session_count) cur = &seat->sessions; else return; - if (seat->current_sess) - prev = NULL; - else + prev = NULL; + if (!seat->current_sess && seat->dummy_sess && + seat->dummy_sess->enabled) prev = seat->dummy_sess; + shl_dlist_for_each_reverse_but_one(iter, cur, &seat->sessions) { s = shl_dlist_entry(iter, struct kmscon_session, list); if (!s->enabled || seat->dummy_sess == s)