[mutter] clutter-device-evdev: Get devices from main seat if no real seat is set



commit 3e85ac8131fc76312a2382d83df6926b88a37415
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Tue May 15 12:09:59 2018 +0100

    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.

 clutter/clutter/evdev/clutter-device-manager-evdev.c | 13 ++++---------
 1 file 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]