diff --git a/libweston/launcher-logind.c b/libweston/launcher-logind.c index 580bb226..993d8e1a 100644 --- a/libweston/launcher-logind.c +++ b/libweston/launcher-logind.c @@ -860,6 +860,9 @@ static int launcher_logind_get_vt(struct weston_launcher *launcher) { struct launcher_logind *wl = wl_container_of(launcher, wl, base); + if (wl->vtnr <= 0) { + return -EINVAL; + } return wl->vtnr; } diff --git a/libweston/launcher-util.c b/libweston/launcher-util.c index 058b6ac0..b2219b68 100644 --- a/libweston/launcher-util.c +++ b/libweston/launcher-util.c @@ -31,6 +31,7 @@ #include "launcher-util.h" #include "launcher-impl.h" +#include #include #include #include @@ -107,10 +108,12 @@ switch_vt_binding(struct weston_keyboard *keyboard, WL_EXPORT void weston_setup_vt_switch_bindings(struct weston_compositor *compositor) { + int ret; uint32_t key; struct weston_launcher *launcher = compositor->launcher; - if (launcher->iface->get_vt(launcher) <= 0) + ret = launcher->iface->get_vt(launcher); + if (ret < 0 && ret != -ENOSYS) return; if (compositor->vt_switching == false)