From 4e3b26d2ed2c51acac35a115946f6f3aa79e3f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 11 Dec 2017 18:22:21 +0800 Subject: [PATCH] clutter/evdev: Ignore unknown touch points We might receive touch events for unknown touch points, for example when starting mutter while touching the screen (resulting in no touch-down event ever being received). Avoid crashing when this happens by just dropping these events on the floor. https://bugzilla.gnome.org/show_bug.cgi?id=791371 --- clutter/clutter/evdev/clutter-device-manager-evdev.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/clutter/clutter/evdev/clutter-device-manager-evdev.c b/clutter/clutter/evdev/clutter-device-manager-evdev.c index 44e3dddbb..d00c771b2 100644 --- a/clutter/clutter/evdev/clutter-device-manager-evdev.c +++ b/clutter/clutter/evdev/clutter-device-manager-evdev.c @@ -1459,6 +1459,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, slot = libinput_event_touch_get_slot (touch_event); time_us = libinput_event_touch_get_time_usec (touch_event); touch_state = clutter_seat_evdev_get_touch (seat, slot); + if (!touch_state) + break; notify_touch_event (device, CLUTTER_TOUCH_END, time_us, slot, touch_state->coords.x, touch_state->coords.y); @@ -1497,6 +1499,9 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, stage_height); touch_state = clutter_seat_evdev_get_touch (seat, slot); + if (!touch_state) + break; + touch_state->coords.x = x; touch_state->coords.y = y;