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.
This commit is contained in:
parent
5f83d9a5c8
commit
3e85ac8131
@ -919,7 +919,6 @@ clutter_device_manager_evdev_get_device (ClutterDeviceManager *manager,
|
|||||||
ClutterDeviceManagerEvdev *manager_evdev;
|
ClutterDeviceManagerEvdev *manager_evdev;
|
||||||
ClutterDeviceManagerEvdevPrivate *priv;
|
ClutterDeviceManagerEvdevPrivate *priv;
|
||||||
GSList *l;
|
GSList *l;
|
||||||
GSList *device_it;
|
|
||||||
|
|
||||||
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager);
|
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager);
|
||||||
priv = manager_evdev->priv;
|
priv = manager_evdev->priv;
|
||||||
@ -927,17 +926,13 @@ clutter_device_manager_evdev_get_device (ClutterDeviceManager *manager,
|
|||||||
for (l = priv->seats; l; l = l->next)
|
for (l = priv->seats; l; l = l->next)
|
||||||
{
|
{
|
||||||
ClutterSeatEvdev *seat = l->data;
|
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)
|
if (device)
|
||||||
{
|
return device;
|
||||||
ClutterInputDevice *device = device_it->data;
|
|
||||||
|
|
||||||
if (clutter_input_device_get_device_id (device) == id)
|
|
||||||
return device;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return clutter_seat_evdev_get_device (priv->main_seat, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user