From 627b33cfe72132febd7e0dc2802816a991bcbdf8 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 27 Jun 2013 14:20:03 +1000 Subject: [PATCH] Require a flag for normal mode too Makes the whole thing more explicit. Signed-off-by: Peter Hutterer --- libevdev/libevdev.c | 3 +++ libevdev/libevdev.h | 3 ++- test/test-libevdev-events.c | 10 +++++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c index daa59df..3e2c98a 100644 --- a/libevdev/libevdev.c +++ b/libevdev/libevdev.c @@ -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; diff --git a/libevdev/libevdev.h b/libevdev/libevdev.h index 613d930..74c4723 100644 --- a/libevdev/libevdev.h +++ b/libevdev/libevdev.h @@ -137,7 +137,8 @@ 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 */ }; /** diff --git a/test/test-libevdev-events.c b/test/test-libevdev-events.c index 5758d17..f23c2cc 100644 --- a/test/test-libevdev-events.c +++ b/test/test-libevdev-events.c @@ -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 */ -- 2.7.4