input: Reset touch state when last touch device was removed

Reset the touch point count in case the driver did not emit appropriate
number of touch up events.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
diff --git a/src/input.c b/src/input.c
index 1b8dbae..34aa720 100644
--- a/src/input.c
+++ b/src/input.c
@@ -517,6 +517,12 @@
 	free(keyboard);
 }
 
+static void
+weston_touch_reset_state(struct weston_touch *touch)
+{
+	touch->num_tp = 0;
+}
+
 WL_EXPORT struct weston_touch *
 weston_touch_create(void)
 {
@@ -2041,6 +2047,7 @@
 	if (seat->touch_device_count == 0) {
 		weston_touch_set_focus(seat, NULL);
 		weston_touch_cancel_grab(seat->touch);
+		weston_touch_reset_state(seat->touch);
 		seat_send_updated_caps(seat);
 	}
 }