systemd_logind_find_info_ptr_by_devnum: Add a start argument
authorHans de Goede <hdegoede@redhat.com>
Wed, 12 Mar 2014 11:45:40 +0000 (12:45 +0100)
committerHans de Goede <hdegoede@redhat.com>
Thu, 13 Mar 2014 12:11:38 +0000 (13:11 +0100)
Modify systemd_logind_find_info_ptr_by_devnum to take a start argument, so
that it can be used to find all occurences of a devnum in an InputInfo list,
rather then just the first.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
hw/xfree86/os-support/linux/systemd-logind.c

index a8406d8..09db336 100644 (file)
@@ -204,11 +204,12 @@ systemd_logind_vtenter(void)
 }
 
 static InputInfoPtr
-systemd_logind_find_info_ptr_by_devnum(int major, int minor)
+systemd_logind_find_info_ptr_by_devnum(InputInfoPtr start,
+                                       int major, int minor)
 {
     InputInfoPtr pInfo;
 
-    for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next)
+    for (pInfo = start; pInfo; pInfo = pInfo->next)
         if (pInfo->major == major && pInfo->minor == minor &&
                 (pInfo->flags & XI86_SERVER_FD))
             return pInfo;
@@ -320,7 +321,8 @@ message_filter(DBusConnection * connection, DBusMessage * message, void *data)
 
     pdev = xf86_find_platform_device_by_devnum(major, minor);        
     if (!pdev)
-        pInfo = systemd_logind_find_info_ptr_by_devnum(major, minor);
+        pInfo = systemd_logind_find_info_ptr_by_devnum(xf86InputDevs,
+                                                       major, minor);
     if (!pdev && !pInfo) {
         LogMessage(X_WARNING, "systemd-logind: could not find dev %u:%u\n",
                    major, minor);