[PATCH libinput] Always check for INVALID configs first

Peter Hutterer peter.hutterer at who-t.net
Wed Dec 3 22:51:22 PST 2014


Always check for invalid input first, then check if the input is supported by
the actual device.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 src/libinput.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/libinput.c b/src/libinput.c
index 0d380fa..60505f6 100644
--- a/src/libinput.c
+++ b/src/libinput.c
@@ -1462,12 +1462,12 @@ LIBINPUT_EXPORT enum libinput_config_status
 libinput_device_config_accel_set_speed(struct libinput_device *device,
 				       double speed)
 {
-	if (!libinput_device_config_accel_is_available(device))
-		return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
-
 	if (speed < -1.0 || speed > 1.0)
 		return LIBINPUT_CONFIG_STATUS_INVALID;
 
+	if (!libinput_device_config_accel_is_available(device))
+		return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
+
 	return device->config.accel->set_speed(device, speed);
 }
 
@@ -1576,9 +1576,6 @@ LIBINPUT_EXPORT enum libinput_config_status
 libinput_device_config_scroll_set_method(struct libinput_device *device,
 					 enum libinput_config_scroll_method method)
 {
-	if ((libinput_device_config_scroll_get_methods(device) & method) != method)
-		return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
-
 	/* Check method is a single valid method */
 	switch (method) {
 	case LIBINPUT_CONFIG_SCROLL_NO_SCROLL:
@@ -1590,6 +1587,9 @@ libinput_device_config_scroll_set_method(struct libinput_device *device,
 		return LIBINPUT_CONFIG_STATUS_INVALID;
 	}
 
+	if ((libinput_device_config_scroll_get_methods(device) & method) != method)
+		return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
+
 	if (device->config.scroll_method)
 		return device->config.scroll_method->set_method(device, method);
 	else /* method must be _NO_SCROLL to get here */
@@ -1618,13 +1618,13 @@ LIBINPUT_EXPORT enum libinput_config_status
 libinput_device_config_scroll_set_button(struct libinput_device *device,
 					 uint32_t button)
 {
-	if ((libinput_device_config_scroll_get_methods(device) &
-	     LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN) == 0)
-		return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
-
 	if (button && !libinput_device_has_button(device, button))
 		return LIBINPUT_CONFIG_STATUS_INVALID;
 
+	if ((libinput_device_config_scroll_get_methods(device) &
+	     LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN) == 0)
+		return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
+
 	return device->config.scroll_method->set_button(device, button);
 }
 
-- 
2.1.0



More information about the wayland-devel mailing list