Don't sync mt axes that don't exist
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 1 Jul 2013 04:39:53 +0000 (14:39 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Mon, 1 Jul 2013 04:39:53 +0000 (14:39 +1000)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
libevdev/libevdev.c

index d85580c..d326c8d 100644 (file)
@@ -352,6 +352,9 @@ sync_mt_state(struct libevdev *dev)
                if (i == ABS_MT_SLOT)
                        continue;
 
+               if (!libevdev_has_event_code(dev, EV_ABS, i))
+                       continue;
+
                idx = i - ABS_MT_MIN;
                mt_state[idx].code = i;
                rc = ioctl(dev->fd, EVIOCGMTSLOTS(sizeof(struct mt_state)), &mt_state[idx]);
@@ -371,6 +374,9 @@ sync_mt_state(struct libevdev *dev)
                        if (j == ABS_MT_SLOT)
                                continue;
 
+                       if (!libevdev_has_event_code(dev, EV_ABS, j))
+                               continue;
+
                        if (dev->mt_slot_vals[i][jdx] == mt_state[jdx].val[i])
                                continue;