From 68220dbac6576678f81deb2667aace3b84d53519 Mon Sep 17 00:00:00 2001 From: nerdopolis Date: Fri, 29 Jun 2018 08:17:48 -0400 Subject: [PATCH] launcher-logind: only get a VT on seat0, as only seat0 supports VTs As only seat0 supports TTYs, this changes the logind launcher where it detects a TTY, only if the seat is seat0. This has only been tested for logind Reviewed-by: Pekka Paalanen Reviewed-by: Emil Velikov --- libweston/launcher-logind.c | 23 +++++++++++++---------- libweston/launcher-util.c | 4 ++++ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/libweston/launcher-logind.c b/libweston/launcher-logind.c index d0559c8f..34e6e5ca 100644 --- a/libweston/launcher-logind.c +++ b/libweston/launcher-logind.c @@ -762,17 +762,20 @@ launcher_logind_connect(struct weston_launcher **out, struct weston_compositor * free(t); goto err_session; } - free(t); - r = weston_sd_session_get_vt(wl->sid, &wl->vtnr); - if (r < 0) { - weston_log("logind: session not running on a VT\n"); - goto err_session; - } else if (tty > 0 && wl->vtnr != (unsigned int )tty) { - weston_log("logind: requested VT --tty=%d differs from real session VT %u\n", - tty, wl->vtnr); - r = -EINVAL; - goto err_session; + r = strcmp(t, "seat0"); + free(t); + if (r == 0) { + r = weston_sd_session_get_vt(wl->sid, &wl->vtnr); + if (r < 0) { + weston_log("logind: session not running on a VT\n"); + goto err_session; + } else if (tty > 0 && wl->vtnr != (unsigned int )tty) { + weston_log("logind: requested VT --tty=%d differs from real session VT %u\n", + tty, wl->vtnr); + r = -EINVAL; + goto err_session; + } } loop = wl_display_get_event_loop(compositor->wl_display); diff --git a/libweston/launcher-util.c b/libweston/launcher-util.c index 03f3219b..41ac7950 100644 --- a/libweston/launcher-util.c +++ b/libweston/launcher-util.c @@ -104,6 +104,10 @@ WL_EXPORT void weston_setup_vt_switch_bindings(struct weston_compositor *compositor) { uint32_t key; + struct weston_launcher *launcher = compositor->launcher; + + if (launcher->iface->get_vt(launcher) <= 0) + return; if (compositor->vt_switching == false) return;