From: Tiago Vignatti <tiago.vigna...@intel.com> Reported-by: Ran Benite <ran...@gmail.com> Signed-off-by: Tiago Vignatti <tiago.vigna...@intel.com> --- compositor/compositor-drm.c | 5 +++++ compositor/compositor.h | 7 +++++++ compositor/evdev.c | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/compositor/compositor-drm.c b/compositor/compositor-drm.c index 9c8e506..d6187af 100644 --- a/compositor/compositor-drm.c +++ b/compositor/compositor-drm.c @@ -789,6 +789,7 @@ vt_func(struct wlsc_compositor *compositor, int event) { struct drm_compositor *ec = (struct drm_compositor *) compositor; struct wlsc_output *output; + struct wlsc_input_device *input; switch (event) { case TTY_ENTER_VT: @@ -796,12 +797,16 @@ vt_func(struct wlsc_compositor *compositor, int event) drmSetMaster(ec->drm.fd); compositor->state = ec->prev_state; wlsc_compositor_damage_all(compositor); + wl_list_for_each(input, &compositor->input_device_list, link) + evdev_add_devices(ec->udev, input); break; case TTY_LEAVE_VT: compositor->focus = 0; ec->prev_state = compositor->state; compositor->state = WLSC_COMPOSITOR_SLEEPING; + wl_list_for_each(input, &compositor->input_device_list, link) + evdev_remove_devices(input); wl_list_for_each(output, &ec->base.output_list, link) drm_output_set_cursor(output, NULL); diff --git a/compositor/compositor.h b/compositor/compositor.h index 0c29de5..671be45 100644 --- a/compositor/compositor.h +++ b/compositor/compositor.h @@ -378,6 +378,13 @@ evdev_input_add_devices(struct wlsc_compositor *c, struct udev *udev, const char *seat); void +evdev_add_devices(struct udev *udev, struct wlsc_input_device + *input_base); + +void +evdev_remove_devices(struct wlsc_input_device *input_base); + +void evdev_input_destroy(struct wlsc_input_device *input_base); enum { diff --git a/compositor/evdev.c b/compositor/evdev.c index 2578450..d33c605 100644 --- a/compositor/evdev.c +++ b/compositor/evdev.c @@ -434,7 +434,7 @@ device_removed(struct udev_device *udev_device, struct evdev_input *master) fprintf(stderr, "evdev input device: removed: %s\n", devnode); } -static void +void evdev_add_devices(struct udev *udev, struct wlsc_input_device *input_base) { struct evdev_input *input = (struct evdev_input *) input_base; @@ -538,7 +538,7 @@ evdev_input_add_devices(struct wlsc_compositor *c, c->input_device = &input->base.input_device; } -static void +void evdev_remove_devices(struct wlsc_input_device *input_base) { struct evdev_input *input = (struct evdev_input *) input_base; -- 1.7.5.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel