if (seat->current_sess)
return 0;
- if (seat->scheduled_sess)
- session = seat->scheduled_sess;
- else
+ if (!seat->scheduled_sess) {
+ log_debug("no session scheduled to run (num %zu)",
+ seat->session_count);
return -ENOENT;
+ }
+ session = seat->scheduled_sess;
if (session->foreground && !seat->foreground) {
ret = seat_go_foreground(seat, false);
else
return;
- next = NULL;
+ if (seat->current_sess)
+ next = NULL;
+ else
+ 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)
else
return;
- prev = NULL;
+ if (seat->current_sess)
+ prev = NULL;
+ else
+ 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)