[PATCH libinput 1/2] Use an enum to enable/disable tapping configuration
Peter Hutterer
peter.hutterer at who-t.net
Sun Jul 20 23:40:07 PDT 2014
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 <peter.hutterer at who-t.net>
---
src/evdev-mt-touchpad-tap.c | 14 ++++++-----
src/libinput-private.h | 6 ++---
src/libinput.c | 14 +++++++----
src/libinput.h | 25 ++++++++++++++-----
test/touchpad.c | 60 +++++++++++++++++++++++++++++++++------------
5 files changed, 83 insertions(+), 36 deletions(-)
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);
--
1.9.3
More information about the wayland-devel
mailing list