summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2018-05-15 12:09:59 +0100
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2018-05-15 12:09:59 +0100
commit3e85ac8131fc76312a2382d83df6926b88a37415 (patch)
tree5b81c56db8b9416b13a6a5cd067a5f660211dbbe
parent5f83d9a5c854873746a31d0cc4d118c9a6d87ddd (diff)
downloadmutter-3e85ac8131fc76312a2382d83df6926b88a37415.tar.gz
clutter-device-evdev: Get devices from main seat if no real seat is set
In devices such as ARM boards there could be no input devices connected on startup, leading to a crash when we try to process artificial events that could be queued (as gnome-shell does when syncing pointer). Those events still should refer to a device and, in case we don't have one provided by libinput we should still return the core devices defined in the main seat.
-rw-r--r--clutter/clutter/evdev/clutter-device-manager-evdev.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/clutter/clutter/evdev/clutter-device-manager-evdev.c b/clutter/clutter/evdev/clutter-device-manager-evdev.c
index bc9549de9..812ad8c08 100644
--- a/clutter/clutter/evdev/clutter-device-manager-evdev.c
+++ b/clutter/clutter/evdev/clutter-device-manager-evdev.c
@@ -919,7 +919,6 @@ clutter_device_manager_evdev_get_device (ClutterDeviceManager *manager,
ClutterDeviceManagerEvdev *manager_evdev;
ClutterDeviceManagerEvdevPrivate *priv;
GSList *l;
- GSList *device_it;
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager);
priv = manager_evdev->priv;
@@ -927,17 +926,13 @@ clutter_device_manager_evdev_get_device (ClutterDeviceManager *manager,
for (l = priv->seats; l; l = l->next)
{
ClutterSeatEvdev *seat = l->data;
+ ClutterInputDevice *device = clutter_seat_evdev_get_device (seat, id);
- for (device_it = seat->devices; device_it; device_it = device_it->next)
- {
- ClutterInputDevice *device = device_it->data;
-
- if (clutter_input_device_get_device_id (device) == id)
- return device;
- }
+ if (device)
+ return device;
}
- return NULL;
+ return clutter_seat_evdev_get_device (priv->main_seat, id);
}
static void