]> diplodocus.org Git - xorg-xinput/blobdiff - src/xinput.c
Require inputproto 1.9.99.12
[xorg-xinput] / src / xinput.c
index 975104510bdea1e23e199ae233364f2ac0fc6ce9..007fe2cd1248336e5d577678ada99966d7be1d33 100644 (file)
@@ -203,8 +203,8 @@ find_device_info(Display    *display,
 }
 
 #ifdef HAVE_XI2
 }
 
 #ifdef HAVE_XI2
-int
-xi2_find_device_id(Display *display, char *name)
+XIDeviceInfo*
+xi2_find_device_info(Display *display, char *name)
 {
     XIDeviceInfo *info;
     int ndevices;
 {
     XIDeviceInfo *info;
     int ndevices;
@@ -220,22 +220,20 @@ xi2_find_device_id(Display *display, char *name)
 
     if (is_id) {
        id = atoi(name);
 
     if (is_id) {
        id = atoi(name);
-    } else
+    }
+
+    info = XIQueryDevice(display, XIAllDevices, &ndevices);
+    for(i = 0; i < ndevices; i++)
     {
     {
-        info = XIQueryDevice(display, AllDevices, &ndevices);
-        for(i = 0; i < ndevices; i++)
+        if ((is_id && info[i].deviceid == id) ||
+                (!is_id && strcmp(info[i].name, name) == 0))
         {
         {
-            if ((is_id && info[i].deviceid == id) ||
-                    (!is_id && strcmp(info[i].name, name) == 0))
-            {
-                id = info[i].deviceid;
-                break;
-            }
+            return &info[i];
         }
         }
-
-        XIFreeDeviceInfo(info);
     }
     }
-    return id;;
+
+    XIFreeDeviceInfo(info);
+    return NULL;
 }
 #endif
 
 }
 #endif
 
@@ -285,6 +283,7 @@ main(int argc, char * argv[])
            int r = (*driver->func)(display, argc-2, argv+2,
                                    driver->func_name, driver->arg_desc);
            XSync(display, False);
            int r = (*driver->func)(display, argc-2, argv+2,
                                    driver->func_name, driver->arg_desc);
            XSync(display, False);
+           XCloseDisplay(display);
            return r;
        }
        driver++;
            return r;
        }
        driver++;