From cca3cc95af5e48d573c7ae587b8672fcef471acf Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 1 Jul 2013 14:39:53 +1000 Subject: [PATCH] Don't sync mt axes that don't exist Signed-off-by: Peter Hutterer --- libevdev/libevdev.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c index d85580c..d326c8d 100644 --- a/libevdev/libevdev.c +++ b/libevdev/libevdev.c @@ -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;