launcher: don't try to switch to weston's vt

Signed-off-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
dev
Giulio Camuffo 8 years ago committed by Pekka Paalanen
parent 7fe0bb2580
commit a32986ecf5
  1. 12
      libweston/launcher-direct.c
  2. 2
      libweston/launcher-impl.h
  3. 8
      libweston/launcher-logind.c
  4. 7
      libweston/launcher-util.c
  5. 12
      libweston/launcher-weston-launch.c

@ -305,6 +305,17 @@ launcher_direct_destroy(struct weston_launcher *launcher_base)
free(launcher); free(launcher);
} }
static int
launcher_direct_get_vt(struct weston_launcher *base)
{
struct launcher_direct *launcher = wl_container_of(base, launcher, base);
struct stat s;
if (fstat(launcher->tty, &s) < 0)
return -1;
return minor(s.st_rdev);
}
struct launcher_interface launcher_direct_iface = { struct launcher_interface launcher_direct_iface = {
launcher_direct_connect, launcher_direct_connect,
launcher_direct_destroy, launcher_direct_destroy,
@ -312,4 +323,5 @@ struct launcher_interface launcher_direct_iface = {
launcher_direct_close, launcher_direct_close,
launcher_direct_activate_vt, launcher_direct_activate_vt,
launcher_direct_restore, launcher_direct_restore,
launcher_direct_get_vt,
}; };

@ -34,6 +34,8 @@ struct launcher_interface {
void (* close) (struct weston_launcher *launcher, int fd); void (* close) (struct weston_launcher *launcher, int fd);
int (* activate_vt) (struct weston_launcher *launcher, int vt); int (* activate_vt) (struct weston_launcher *launcher, int vt);
void (* restore) (struct weston_launcher *launcher); void (* restore) (struct weston_launcher *launcher);
/* Get the number of the VT weston is running in */
int (* get_vt) (struct weston_launcher *launcher);
}; };
struct weston_launcher { struct weston_launcher {

@ -830,6 +830,13 @@ launcher_logind_destroy(struct weston_launcher *launcher)
free(wl); free(wl);
} }
static int
launcher_logind_get_vt(struct weston_launcher *launcher)
{
struct launcher_logind *wl = wl_container_of(launcher, wl, base);
return wl->vtnr;
}
struct launcher_interface launcher_logind_iface = { struct launcher_interface launcher_logind_iface = {
launcher_logind_connect, launcher_logind_connect,
launcher_logind_destroy, launcher_logind_destroy,
@ -837,4 +844,5 @@ struct launcher_interface launcher_logind_iface = {
launcher_logind_close, launcher_logind_close,
launcher_logind_activate_vt, launcher_logind_activate_vt,
launcher_logind_restore, launcher_logind_restore,
launcher_logind_get_vt,
}; };

@ -98,8 +98,13 @@ switch_vt_binding(struct weston_keyboard *keyboard,
uint32_t time, uint32_t key, void *data) uint32_t time, uint32_t key, void *data)
{ {
struct weston_compositor *compositor = data; struct weston_compositor *compositor = data;
struct weston_launcher *launcher = compositor->launcher;
int vt = key - KEY_F1 + 1;
weston_launcher_activate_vt(compositor->launcher, key - KEY_F1 + 1); if (vt == launcher->iface->get_vt(launcher))
return;
weston_launcher_activate_vt(launcher, vt);
} }
WL_EXPORT void WL_EXPORT void

@ -276,6 +276,17 @@ launcher_weston_launch_destroy(struct weston_launcher *launcher_base)
free(launcher); free(launcher);
} }
static int
launcher_weston_launch_get_vt(struct weston_launcher *base)
{
struct launcher_weston_launch *launcher = wl_container_of(base, launcher, base);
struct stat s;
if (fstat(launcher->tty, &s) < 0)
return -1;
return minor(s.st_rdev);
}
struct launcher_interface launcher_weston_launch_iface = { struct launcher_interface launcher_weston_launch_iface = {
launcher_weston_launch_connect, launcher_weston_launch_connect,
launcher_weston_launch_destroy, launcher_weston_launch_destroy,
@ -283,4 +294,5 @@ struct launcher_interface launcher_weston_launch_iface = {
launcher_weston_launch_close, launcher_weston_launch_close,
launcher_weston_launch_activate_vt, launcher_weston_launch_activate_vt,
launcher_weston_launch_restore, launcher_weston_launch_restore,
launcher_weston_launch_get_vt,
}; };

Loading…
Cancel
Save