Require a flag for normal mode too
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 27 Jun 2013 04:20:03 +0000 (14:20 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 27 Jun 2013 04:20:03 +0000 (14:20 +1000)
Makes the whole thing more explicit.

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

index daa59df..3e2c98a 100644 (file)
@@ -530,6 +530,9 @@ int libevdev_next_event(struct libevdev *dev, unsigned int flags, struct input_e
        if (dev->fd < 0)
                return -ENODEV;
 
+       if (!(flags & (LIBEVDEV_READ_NORMAL|LIBEVDEV_READ_SYNC)))
+               return -EINVAL;
+
        if (flags & LIBEVDEV_READ_SYNC) {
                if (!dev->need_sync && dev->queue_nsync == 0)
                        return -EAGAIN;
index 613d930..74c4723 100644 (file)
 struct libevdev;
 
 enum EvdevReadFlags {
-    LIBEVDEV_READ_SYNC         = 1, /**< Process data in sync mode */
+       LIBEVDEV_READ_SYNC              = 1, /**< Process data in sync mode */
+       LIBEVDEV_READ_NORMAL            = 2, /**< Process data in normal mode */
 };
 
 /**
index 5758d17..f23c2cc 100644 (file)
@@ -53,12 +53,12 @@ START_TEST(test_next_event)
        rc = libevdev_new_from_fd(fd, &dev);
        ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));;
 
-       rc = libevdev_next_event(dev, 0, &ev);
+       rc = libevdev_next_event(dev, LIBEVDEV_READ_NORMAL, &ev);
        ck_assert_int_eq(rc, -EAGAIN);
 
        uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1);
        uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0);
-       rc = libevdev_next_event(dev, 0, &ev);
+       rc = libevdev_next_event(dev, LIBEVDEV_READ_NORMAL, &ev);
        ck_assert_int_eq(rc, 0);
        ck_assert_int_eq(ev.type, EV_KEY);
        ck_assert_int_eq(ev.code, BTN_LEFT);
@@ -104,7 +104,7 @@ START_TEST(test_syn_event)
         */
        uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1);
        uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0);
-       rc = libevdev_next_event(dev, 0, &ev);
+       rc = libevdev_next_event(dev, LIBEVDEV_READ_NORMAL, &ev);
        ck_assert_int_eq(rc, 0);
        ck_assert_int_eq(ev.type, EV_KEY);
        ck_assert_int_eq(ev.code, BTN_LEFT);
@@ -118,14 +118,14 @@ START_TEST(test_syn_event)
        ev.value = 0;
        rc = write(pipefd[1], &ev, sizeof(ev));
        ck_assert_int_eq(rc, sizeof(ev));
-       rc = libevdev_next_event(dev, 0, &ev);
+       rc = libevdev_next_event(dev, LIBEVDEV_READ_NORMAL, &ev);
 
        libevdev_change_fd(dev, fd);
 
        ck_assert_int_eq(rc, 0);
        ck_assert_int_eq(ev.type, EV_SYN);
        ck_assert_int_eq(ev.code, SYN_REPORT);
-       rc = libevdev_next_event(dev, 0, &ev);
+       rc = libevdev_next_event(dev, LIBEVDEV_READ_NORMAL, &ev);
        ck_assert_int_eq(rc, 1);
 
        /* only check for the rc, nothing actually changed on the device */