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.
(cherry picked from commit
3e85ac8131fc76312a2382d83df6926b88a37415)
Origin: upstream, 3.28.3, commit:
2a6782dc10147a5a45f90ac318ba440f21f819d6
Gbp-Pq: Name clutter-device-evdev-Get-devices-from-main-seat-if-no-rea.patch
ClutterDeviceManagerEvdev *manager_evdev;
ClutterDeviceManagerEvdevPrivate *priv;
GSList *l;
- GSList *device_it;
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager);
priv = manager_evdev->priv;
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