Add a fixme: if we're dropping sync event, libedev loses state info too
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 31 May 2013 05:01:32 +0000 (15:01 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Mon, 3 Jun 2013 04:09:27 +0000 (14:09 +1000)
If a client doesn't care about syncing that's one thing, but
libevdev functions still need to return the right _current_ (i.e. synced)
value.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
libevdev/libevdev.c

index bdde2a9..9ce626f 100644 (file)
@@ -541,8 +541,12 @@ int libevdev_next_event(struct libevdev *dev, unsigned int flags, struct input_e
                        if (rc != 0)
                                return rc;
                }
-       } else if (dev->need_sync)
+       } else if (dev->need_sync) {
+               /* FIXME: still need to call update_state for all events
+                * here, otherwise the library has the wrong view of the
+                * device too */
                queue_shift_multiple(dev, dev->queue_nsync, NULL);
+       }
 
        /* Always read in some more events. Best case this smoothes over a potential SYN_DROPPED,
           worst case we don't read fast enough and end up with SYN_DROPPED anyway */