libevdev needs to maintain the correct state of the device, even if the caller
decides to drop all delta events after a SYN_DROPPED.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
return rc;
}
} 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);
+ struct input_event e;
+
+ /* call update_state for all events here, otherwise the library has the wrong view
+ of the device too */
+ while (queue_shift(dev, &e) == 0)
+ update_state(dev, &e);
}
/* FIXME: check for O_NONBLOCK and if not set, skip if we have an