From: Peter Hutterer Date: Mon, 21 Jul 2014 01:07:25 +0000 (+1000) Subject: Use an enum to enable/disable tapping configuration X-Git-Tag: 0.5.0~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d9cf64919985e35550fc4586b55c66c2025e73c9;p=platform%2Fupstream%2Flibinput.git Use an enum to enable/disable tapping configuration More expressive in the caller and less ambiguous about return values (is it 1? is it non-zero? can it be negative?) Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede --- diff --git a/src/evdev-mt-touchpad-tap.c b/src/evdev-mt-touchpad-tap.c index 0f1f837..6008507 100644 --- a/src/evdev-mt-touchpad-tap.c +++ b/src/evdev-mt-touchpad-tap.c @@ -625,7 +625,8 @@ tp_tap_config_count(struct libinput_device *device) } static enum libinput_config_status -tp_tap_config_set_enabled(struct libinput_device *device, int enabled) +tp_tap_config_set_enabled(struct libinput_device *device, + enum libinput_config_tap_state enabled) { struct evdev_dispatch *dispatch; struct tp_dispatch *tp; @@ -633,12 +634,12 @@ tp_tap_config_set_enabled(struct libinput_device *device, int enabled) dispatch = ((struct evdev_device *) device)->dispatch; tp = container_of(dispatch, tp, base); - tp->tap.enabled = enabled; + tp->tap.enabled = (enabled == LIBINPUT_CONFIG_TAP_ENABLED); return LIBINPUT_CONFIG_STATUS_SUCCESS; } -static int +static enum libinput_config_tap_state tp_tap_config_is_enabled(struct libinput_device *device) { struct evdev_dispatch *dispatch; @@ -647,10 +648,11 @@ tp_tap_config_is_enabled(struct libinput_device *device) dispatch = ((struct evdev_device *) device)->dispatch; tp = container_of(dispatch, tp, base); - return tp->tap.enabled; + return tp->tap.enabled ? LIBINPUT_CONFIG_TAP_ENABLED : + LIBINPUT_CONFIG_TAP_DISABLED; } -static int +static enum libinput_config_tap_state tp_tap_config_get_default(struct libinput_device *device) { /** @@ -662,7 +664,7 @@ tp_tap_config_get_default(struct libinput_device *device) * usually know where to enable it, or at least you can search for * it. */ - return false; + return LIBINPUT_CONFIG_TAP_DISABLED; } int diff --git a/src/libinput-private.h b/src/libinput-private.h index 23c5140..94a3e07 100644 --- a/src/libinput-private.h +++ b/src/libinput-private.h @@ -84,9 +84,9 @@ struct libinput_seat { struct libinput_device_config_tap { int (*count)(struct libinput_device *device); enum libinput_config_status (*set_enabled)(struct libinput_device *device, - int enable); - int (*get_enabled)(struct libinput_device *device); - int (*get_default)(struct libinput_device *device); + enum libinput_config_tap_state enable); + enum libinput_config_tap_state (*get_enabled)(struct libinput_device *device); + enum libinput_config_tap_state (*get_default)(struct libinput_device *device); }; struct libinput_device_config { diff --git a/src/libinput.c b/src/libinput.c index ff4b01e..a278ce4 100644 --- a/src/libinput.c +++ b/src/libinput.c @@ -1284,8 +1284,12 @@ libinput_device_config_tap_get_finger_count(struct libinput_device *device) LIBINPUT_EXPORT enum libinput_config_status libinput_device_config_tap_set_enabled(struct libinput_device *device, - int enable) + enum libinput_config_tap_state enable) { + if (enable != LIBINPUT_CONFIG_TAP_ENABLED && + enable != LIBINPUT_CONFIG_TAP_DISABLED) + return LIBINPUT_CONFIG_STATUS_INVALID; + if (enable && libinput_device_config_tap_get_finger_count(device) == 0) return LIBINPUT_CONFIG_STATUS_UNSUPPORTED; @@ -1293,20 +1297,20 @@ libinput_device_config_tap_set_enabled(struct libinput_device *device, return device->config.tap->set_enabled(device, enable); } -LIBINPUT_EXPORT int +LIBINPUT_EXPORT enum libinput_config_tap_state libinput_device_config_tap_get_enabled(struct libinput_device *device) { if (libinput_device_config_tap_get_finger_count(device) == 0) - return 0; + return LIBINPUT_CONFIG_TAP_DISABLED; return device->config.tap->get_enabled(device); } -LIBINPUT_EXPORT int +LIBINPUT_EXPORT enum libinput_config_tap_state libinput_device_config_tap_get_default_enabled(struct libinput_device *device) { if (libinput_device_config_tap_get_finger_count(device) == 0) - return 0; + return LIBINPUT_CONFIG_TAP_DISABLED; return device->config.tap->get_default(device); } diff --git a/src/libinput.h b/src/libinput.h index 7d33f2b..3cd8e7b 100644 --- a/src/libinput.h +++ b/src/libinput.h @@ -1443,6 +1443,16 @@ libinput_config_status_to_str(enum libinput_config_status status); /** * @ingroup config + */ +enum libinput_config_tap_state { + LIBINPUT_CONFIG_TAP_DISABLED, /**< Tapping is to be disabled, or is + currently disabled */ + LIBINPUT_CONFIG_TAP_ENABLED, /**< Tapping is to be enabled, or is + currently enabled */ +}; + +/** + * @ingroup config * * Check if the device supports tap-to-click. See * libinput_device_config_tap_set_enabled() for more information. @@ -1468,7 +1478,8 @@ libinput_device_config_tap_get_finger_count(struct libinput_device *device); * libinput_device_config_tap_get_finger_count(). * * @param device The device to configure - * @param enable Non-zero to enable, zero to disable + * @param enable @ref LIBINPUT_CONFIG_TAP_ENABLED to enable tapping or @ref + * LIBINPUT_CONFIG_TAP_DISABLED to disable tapping * * @return A config status code. Disabling tapping on a device that does not * support tapping always succeeds. @@ -1479,7 +1490,7 @@ libinput_device_config_tap_get_finger_count(struct libinput_device *device); */ enum libinput_config_status libinput_device_config_tap_set_enabled(struct libinput_device *device, - int enable); + enum libinput_config_tap_state enable); /** * @ingroup config @@ -1489,13 +1500,14 @@ libinput_device_config_tap_set_enabled(struct libinput_device *device, * * @param device The device to configure * - * @return 1 if enabled, 0 otherwise. + * @return @ref LIBINPUT_CONFIG_TAP_ENABLED if tapping is currently enabled, + * or @ref LIBINPUT_CONFIG_TAP_DISABLED is currently disabled * * @see libinput_device_config_tap_get_finger_count * @see libinput_device_config_tap_set_enabled * @see libinput_device_config_tap_get_default_enabled */ -int +enum libinput_config_tap_state libinput_device_config_tap_get_enabled(struct libinput_device *device); /** @@ -1504,13 +1516,14 @@ libinput_device_config_tap_get_enabled(struct libinput_device *device); * Return the default setting for whether tapping is enabled on this device. * * @param device The device to configure - * @return 1 if tapping is enabled by default, or 0 otherwise + * @return @ref LIBINPUT_CONFIG_TAP_ENABLED if tapping is enabled by default, + * or @ref LIBINPUT_CONFIG_TAP_DISABLED is disabled by default * * @see libinput_device_config_tap_get_finger_count * @see libinput_device_config_tap_set_enabled * @see libinput_device_config_tap_get_enabled */ -int +enum libinput_config_tap_state libinput_device_config_tap_get_default_enabled(struct libinput_device *device); #ifdef __cplusplus diff --git a/test/touchpad.c b/test/touchpad.c index 334a59c..86b2c91 100644 --- a/test/touchpad.c +++ b/test/touchpad.c @@ -116,7 +116,8 @@ START_TEST(touchpad_1fg_tap) struct libinput *li = dev->libinput; struct libinput_event *event; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(li); @@ -143,7 +144,8 @@ START_TEST(touchpad_1fg_tap_n_drag) struct libinput *li = dev->libinput; struct libinput_event *event; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(li); @@ -195,7 +197,8 @@ START_TEST(touchpad_2fg_tap) struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(dev->libinput); @@ -221,7 +224,8 @@ START_TEST(touchpad_2fg_tap_inverted) struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(dev->libinput); @@ -247,7 +251,8 @@ START_TEST(touchpad_1fg_tap_click) struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(dev->libinput); @@ -276,7 +281,8 @@ START_TEST(touchpad_2fg_tap_click) struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(dev->libinput); @@ -307,7 +313,8 @@ START_TEST(touchpad_2fg_tap_click_apple) struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(dev->libinput); @@ -415,7 +422,8 @@ START_TEST(touchpad_1fg_double_tap_click) struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(dev->libinput); @@ -451,7 +459,8 @@ START_TEST(touchpad_1fg_tap_n_drag_click) struct libinput *li = dev->libinput; struct libinput_event *event; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(dev->libinput); @@ -503,7 +512,8 @@ START_TEST(touchpad_3fg_tap) struct libinput_event *event; int i; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); for (i = 0; i < 3; i++) { litest_drain_events(li); @@ -798,7 +808,8 @@ START_TEST(clickpad_softbutton_left_tap_n_drag) struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(li); @@ -840,7 +851,8 @@ START_TEST(clickpad_softbutton_right_tap_n_drag) struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; - libinput_device_config_tap_set_enabled(dev->libinput_device, 1); + libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED); litest_drain_events(li); @@ -1323,7 +1335,8 @@ START_TEST(touchpad_tap_is_available) struct litest_device *dev = litest_current_device(); ck_assert_int_ge(libinput_device_config_tap_get_finger_count(dev->libinput_device), 1); - ck_assert_int_eq(libinput_device_config_tap_get_enabled(dev->libinput_device), 0); + ck_assert_int_eq(libinput_device_config_tap_get_enabled(dev->libinput_device), + LIBINPUT_CONFIG_TAP_DISABLED); } END_TEST @@ -1332,8 +1345,10 @@ START_TEST(touchpad_tap_is_not_available) struct litest_device *dev = litest_current_device(); ck_assert_int_eq(libinput_device_config_tap_get_finger_count(dev->libinput_device), 0); - ck_assert_int_eq(libinput_device_config_tap_get_enabled(dev->libinput_device), 0); - ck_assert_int_eq(libinput_device_config_tap_set_enabled(dev->libinput_device, 1), + ck_assert_int_eq(libinput_device_config_tap_get_enabled(dev->libinput_device), + LIBINPUT_CONFIG_TAP_DISABLED); + ck_assert_int_eq(libinput_device_config_tap_set_enabled(dev->libinput_device, + LIBINPUT_CONFIG_TAP_ENABLED), LIBINPUT_CONFIG_STATUS_UNSUPPORTED); } END_TEST @@ -1342,7 +1357,19 @@ START_TEST(touchpad_tap_default) { struct litest_device *dev = litest_current_device(); - ck_assert_int_eq(libinput_device_config_tap_get_default_enabled(dev->libinput_device), 0); + ck_assert_int_eq(libinput_device_config_tap_get_default_enabled(dev->libinput_device), + LIBINPUT_CONFIG_TAP_DISABLED); +} +END_TEST + +START_TEST(touchpad_tap_invalid) +{ + struct litest_device *dev = litest_current_device(); + + ck_assert_int_eq(libinput_device_config_tap_set_enabled(dev->libinput_device, 2), + LIBINPUT_CONFIG_STATUS_INVALID); + ck_assert_int_eq(libinput_device_config_tap_set_enabled(dev->libinput_device, -1), + LIBINPUT_CONFIG_STATUS_INVALID); } END_TEST @@ -1544,6 +1571,7 @@ int main(int argc, char **argv) { litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY); litest_add("touchpad:tap", touchpad_tap_default, LITEST_TOUCHPAD, LITEST_ANY); + litest_add("touchpad:tap", touchpad_tap_invalid, LITEST_TOUCHPAD, LITEST_ANY); litest_add("touchpad:tap", touchpad_tap_is_available, LITEST_TOUCHPAD, LITEST_ANY); litest_add("touchpad:tap", touchpad_tap_is_not_available, LITEST_ANY, LITEST_TOUCHPAD);