[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