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 <pekka.paalanen@collabora.co.uk>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
diff --git a/libweston/launcher-logind.c b/libweston/launcher-logind.c
index d0559c8..34e6e5c 100644
--- a/libweston/launcher-logind.c
+++ b/libweston/launcher-logind.c
@@ -762,17 +762,20 @@
 		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 03f3219..41ac795 100644
--- a/libweston/launcher-util.c
+++ b/libweston/launcher-util.c
@@ -104,6 +104,10 @@
 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;