[PATCH weston] compositor: don't have the backend libraries switch vt
Giulio Camuffo
giuliocamuffo at gmail.com
Tue Mar 3 11:23:36 PST 2015
Duh, ignore this one. I sent it by mistake, it depends on libweston.
2015-03-03 21:21 GMT+02:00 Giulio Camuffo <giuliocamuffo at gmail.com>:
> A compositor may want to handle the vt switches itself, for example
> to ensure to have a lock screen before switching. To enable that move
> the key bindings for the vt switch in the common weston code and add
> a generic API in libweston to switch vt.
> ---
> Makefile.am | 2 +-
> src/compositor-drm.c | 14 --------------
> src/compositor-fbdev.c | 14 --------------
> src/compositor.c | 1 +
> src/compositor.h | 27 +++++++++++++++++++++++++++
> src/launcher-util.c | 13 ++++++++++++-
> src/launcher-util.h | 3 ---
> src/weston.c | 15 +++++++++++++++
> 8 files changed, 56 insertions(+), 33 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index 5cf8a30..e4acd89 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -50,7 +50,7 @@ lib_LTLIBRARIES = libweston.la
> libweston_la_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON
> libweston_la_CFLAGS = $(GCC_CFLAGS) $(COMPOSITOR_CFLAGS) $(LIBUNWIND_CFLAGS)
> libweston_la_LIBADD = $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \
> - $(DLOPEN_LIBS) -lm libshared.la
> + $(DLOPEN_LIBS) -lm libshared.la libsession-helper.la
> libweston_la_LDFLAGS = -release $(abi_version)
>
> libweston_la_SOURCES = \
> diff --git a/src/compositor-drm.c b/src/compositor-drm.c
> index d41c9cf..6bcf85b 100644
> --- a/src/compositor-drm.c
> +++ b/src/compositor-drm.c
> @@ -2402,14 +2402,6 @@ session_notify(struct wl_listener *listener, void *data)
> };
> }
>
> -static void
> -switch_vt_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
> -{
> - struct weston_compositor *compositor = data;
> -
> - weston_launcher_activate_vt(compositor->launcher, key - KEY_F1 + 1);
> -}
> -
> /*
> * Find primary GPU
> * Some systems may have multiple DRM devices attached to a single seat. This
> @@ -2648,7 +2640,6 @@ drm_backend_create(struct weston_compositor *compositor,
> struct udev_device *drm_device;
> struct wl_event_loop *loop;
> const char *path;
> - uint32_t key;
>
> weston_log("initializing drm backend\n");
>
> @@ -2711,11 +2702,6 @@ drm_backend_create(struct weston_compositor *compositor,
>
> b->prev_state = WESTON_COMPOSITOR_ACTIVE;
>
> - for (key = KEY_F1; key < KEY_F9; key++)
> - weston_compositor_add_key_binding(compositor, key,
> - MODIFIER_CTRL | MODIFIER_ALT,
> - switch_vt_binding, compositor);
> -
> wl_list_init(&b->sprite_list);
> create_sprites(b);
>
> diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c
> index 8d3185e..88585c5 100644
> --- a/src/compositor-fbdev.c
> +++ b/src/compositor-fbdev.c
> @@ -857,21 +857,12 @@ fbdev_restore(struct weston_compositor *compositor)
> weston_launcher_restore(compositor->launcher);
> }
>
> -static void
> -switch_vt_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
> -{
> - struct weston_compositor *compositor = data;
> -
> - weston_launcher_activate_vt(compositor->launcher, key - KEY_F1 + 1);
> -}
> -
> static struct fbdev_backend *
> fbdev_backend_create(struct weston_compositor *compositor,
> struct fbdev_parameters *param)
> {
> struct fbdev_backend *backend;
> const char *seat_id = default_seat;
> - uint32_t key;
>
> weston_log("initializing fbdev backend\n");
>
> @@ -908,11 +899,6 @@ fbdev_backend_create(struct weston_compositor *compositor,
> backend->prev_state = WESTON_COMPOSITOR_ACTIVE;
> backend->use_pixman = !param->use_gl;
>
> - for (key = KEY_F1; key < KEY_F9; key++)
> - weston_compositor_add_key_binding(compositor, key,
> - MODIFIER_CTRL | MODIFIER_ALT,
> - switch_vt_binding,
> - compositor);
> if (backend->use_pixman) {
> if (pixman_renderer_init(compositor) < 0)
> goto out_launcher;
> diff --git a/src/compositor.c b/src/compositor.c
> index 6d11144..b27f0e0 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -51,6 +51,7 @@
> #include "timeline.h"
>
> #include "compositor.h"
> +#include "launcher-util.h"
> #include "scaler-server-protocol.h"
> #include "presentation_timing-server-protocol.h"
> #include "../shared/os-compatibility.h"
> diff --git a/src/compositor.h b/src/compositor.h
> index af34290..24a4567 100644
> --- a/src/compositor.h
> +++ b/src/compositor.h
> @@ -1221,6 +1221,33 @@ void
> weston_compositor_set_default_pointer_grab(struct weston_compositor *compositor,
> const struct weston_pointer_grab_interface *interface);
>
> +/**
> + * Request a vt switch for the compositor.
> + *
> + * \param launcher The launcher helper used by the compositor
> + * \param vt The vt to switch to
> + *
> + * Returns 0 on success, -1 otherwise.
> + *
> + * \sa weston_launcher_get_vt
> + * \sa weston_compositor.launcher
> + */
> +int
> +weston_launcher_activate_vt(struct weston_launcher *launcher, int vt);
> +
> +/**
> + * Get the vt the compositor is running on.
> + *
> + * \param launcher The launcher helper used by the compositor
> + *
> + * Returns the number of the vt on success, -1 otherwise.
> + *
> + * \sa weston_launcher_activate_vt
> + * \sa weston_compositor.launcher
> + */
> +int
> +weston_launcher_get_vt(struct weston_launcher *launcher);
> +
> int
> weston_environment_get_fd(const char *env);
>
> diff --git a/src/launcher-util.c b/src/launcher-util.c
> index e89710b..fdec610 100644
> --- a/src/launcher-util.c
> +++ b/src/launcher-util.c
> @@ -375,7 +375,7 @@ setup_tty(struct weston_launcher *launcher, int tty)
> return -1;
> }
>
> -int
> +WL_EXPORT int
> weston_launcher_activate_vt(struct weston_launcher *launcher, int vt)
> {
> if (launcher->logind)
> @@ -454,3 +454,14 @@ weston_launcher_destroy(struct weston_launcher *launcher)
>
> free(launcher);
> }
> +
> +WL_EXPORT int
> +weston_launcher_get_vt(struct weston_launcher *launcher)
> +{
> + struct stat s;
> + if (fstat(launcher->tty, &s) < 0)
> + return -1;
> +
> + return minor(s.st_rdev);
> +}
> +
> diff --git a/src/launcher-util.h b/src/launcher-util.h
> index a60f8a1..497d801 100644
> --- a/src/launcher-util.h
> +++ b/src/launcher-util.h
> @@ -43,9 +43,6 @@ weston_launcher_open(struct weston_launcher *launcher,
> void
> weston_launcher_close(struct weston_launcher *launcher, int fd);
>
> -int
> -weston_launcher_activate_vt(struct weston_launcher *launcher, int vt);
> -
> void
> weston_launcher_restore(struct weston_launcher *launcher);
>
> diff --git a/src/weston.c b/src/weston.c
> index f1a4351..be98a23 100644
> --- a/src/weston.c
> +++ b/src/weston.c
> @@ -948,6 +948,14 @@ weston_transform_to_string(uint32_t output_transform)
> }
>
> static void
> +switch_vt_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
> +{
> + struct weston_compositor *compositor = data;
> +
> + weston_launcher_activate_vt(compositor->launcher, key - KEY_F1 + 1);
> +}
> +
> +static void
> handle_terminate(struct weston_compositor *c)
> {
> wl_display_terminate(c->wl_display);
> @@ -976,6 +984,7 @@ int main(int argc, char *argv[])
> int32_t version = 0;
> int32_t noconfig = 0;
> int32_t numlock_on;
> + uint32_t key;
> struct weston_config *config = NULL;
> struct weston_config_section *section;
> struct wl_client *primary_client;
> @@ -1079,6 +1088,12 @@ int main(int argc, char *argv[])
> goto out_signals;
> }
>
> + if (ec->launcher) {
> + for (key = KEY_F1; key < KEY_F9; key++)
> + weston_compositor_add_key_binding(ec, key,
> + MODIFIER_CTRL | MODIFIER_ALT,
> + switch_vt_binding, ec);
> + }
> catch_signals();
> segv_compositor = ec;
>
> --
> 2.3.1
>
More information about the wayland-devel
mailing list