launcher: do not touch VT/tty while using non-default seat
authorLeandro Ribeiro <leandro.ribeiro@collabora.com>
Wed, 3 Jun 2020 13:01:06 +0000 (10:01 -0300)
committerPekka Paalanen <pq@iki.fi>
Thu, 25 Jun 2020 10:17:31 +0000 (10:17 +0000)
Launcher-direct does not allow us to run using a different
seat from the default seat0. This happens because VTs are
only exposed to the default seat, and users that are on
non-default seat should not touch VTs.

Add check in launcher-direct to skip VT/tty management if user
is running on a non-default seat.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
libweston/launcher-direct.c

index 9fa329b69b46e2fcc7a84b3704f80b62ca42b3c1..382ca49f70de8b8de19e45cc9fac58531b1412dd 100644 (file)
@@ -301,9 +301,13 @@ launcher_direct_connect(struct weston_launcher **out, struct weston_compositor *
        launcher->base.iface = &launcher_direct_iface;
        launcher->compositor = compositor;
 
-       if (setup_tty(launcher, tty) == -1) {
-               free(launcher);
-               return -1;
+       if (strcmp("seat0", seat_id) == 0) {
+               if (setup_tty(launcher, tty) == -1) {
+                       free(launcher);
+                       return -1;
+               }
+       } else {
+               launcher->tty = -1;
        }
 
        * (struct launcher_direct **) out = launcher;
@@ -315,11 +319,11 @@ launcher_direct_destroy(struct weston_launcher *launcher_base)
 {
        struct launcher_direct *launcher = wl_container_of(launcher_base, launcher, base);
 
-       launcher_direct_restore(&launcher->base);
-       wl_event_source_remove(launcher->vt_source);
-
-       if (launcher->tty >= 0)
+       if (launcher->tty >= 0) {
+               launcher_direct_restore(&launcher->base);
+               wl_event_source_remove(launcher->vt_source);
                close(launcher->tty);
+       }
 
        free(launcher);
 }