summaryrefslogtreecommitdiff
path: root/libevdev/libevdev.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-04-01 15:12:56 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-04-03 12:08:54 +1000
commitca082d5fcbe26edf13632a16a7a4d09f680296f6 (patch)
tree10a1f8ba4ef942c341803b1deedb088224278d0a /libevdev/libevdev.c
parent7164e1d412894e2b394e37b141cccad4286de683 (diff)
downloadlibevdev-ca082d5fcbe26edf13632a16a7a4d09f680296f6.tar.gz
Only sync the initial MT state for Protocol B devices
For protocol A devices we won't get the information from the kernel anyway and we expect all axes to be updated in the next event. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Diffstat (limited to 'libevdev/libevdev.c')
-rw-r--r--libevdev/libevdev.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
index 99e86a0..e2070d4 100644
--- a/libevdev/libevdev.c
+++ b/libevdev/libevdev.c
@@ -395,7 +395,9 @@ libevdev_set_fd(struct libevdev* dev, int fd)
}
dev->fd = fd;
- sync_mt_state(dev, 0);
+ if (!libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT - 1) &&
+ libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT))
+ sync_mt_state(dev, 0);
rc = init_event_queue(dev);
if (rc < 0) {