X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-seat.c;h=99921951511cc3c9293c06d0be12fb3669cda899;hb=e1c959948c0e31d6997bcdfbabfbd077784b2bae;hp=5350e770041c78533007c64dd863436b4074b973;hpb=a08ac7e0f72a502564aae6b85a8821f6bd03493c;p=elogind.git diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index 5350e7700..999219515 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -275,8 +275,13 @@ int seat_switch_to(Seat *s, unsigned int num) { if (!num) return -EINVAL; - if (num >= s->position_count || !s->positions[num]) + if (num >= s->position_count || !s->positions[num]) { + /* allow switching to unused VTs to trigger auto-activate */ + if (seat_has_vts(s) && num < 64) + return chvt(num); + return -EINVAL; + } return session_activate(s->positions[num]); } @@ -485,7 +490,7 @@ void seat_claim_position(Seat *s, Session *session, unsigned int pos) { if (seat_has_vts(s)) pos = session->vtnr; - if (!GREEDY_REALLOC0_T(s->positions, s->position_count, pos + 1)) + if (!GREEDY_REALLOC0(s->positions, s->position_count, pos + 1)) return; seat_evict_position(s, session);