From 3e12e63f034ba6d2c1b27aa5d8f29dde7b0f94db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 2 Dec 2013 22:05:05 +0100 Subject: [PATCH] input: Reset pointer state when last pointer device was removed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reset pointer button count in case the driver did not emit appropriate number of number button released events. Signed-off-by: Jonas Ã…dahl --- src/input.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/input.c b/src/input.c index 34aa720c8..01eafc267 100644 --- a/src/input.c +++ b/src/input.c @@ -431,6 +431,12 @@ pointer_handle_sprite_destroy(struct wl_listener *listener, void *data) pointer->sprite = NULL; } +static void +weston_pointer_reset_state(struct weston_pointer *pointer) +{ + pointer->button_count = 0; +} + WL_EXPORT struct weston_pointer * weston_pointer_create(struct weston_seat *seat) { @@ -2013,6 +2019,7 @@ weston_seat_release_pointer(struct weston_seat *seat) if (pointer->sprite) pointer_unmap_sprite(pointer); + weston_pointer_reset_state(pointer); seat_send_updated_caps(seat); } }