summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-05-16 09:06:41 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-07-03 13:48:43 +1000
commit4b88bf30d43ab3ba731c9e78f011b78a484e12ed (patch)
tree3757e95abbf7889107d4b2cfca8c94277a1f1b6b
parent5cecefeea050642355fd35f39f46b5aa7ee304c5 (diff)
downloadlibinput-4b88bf30d43ab3ba731c9e78f011b78a484e12ed.tar.gz
Add an enum for configuration return codes
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jonas Ã…dahl <jadahl@gmail.com>
-rw-r--r--src/libinput.c20
-rw-r--r--src/libinput.h34
-rw-r--r--test/misc.c23
3 files changed, 77 insertions, 0 deletions
diff --git a/src/libinput.c b/src/libinput.c
index 1918b48a..6ea9e485 100644
--- a/src/libinput.c
+++ b/src/libinput.c
@@ -1255,3 +1255,23 @@ libinput_event_touch_get_base_event(struct libinput_event_touch *event)
{
return &event->base;
}
+
+LIBINPUT_EXPORT const char *
+libinput_config_status_to_str(enum libinput_config_status status)
+{
+ const char *str = NULL;
+
+ switch(status) {
+ case LIBINPUT_CONFIG_STATUS_SUCCESS:
+ str = "Success";
+ break;
+ case LIBINPUT_CONFIG_STATUS_UNSUPPORTED:
+ str = "Unsupported configuration option";
+ break;
+ case LIBINPUT_CONFIG_STATUS_INVALID:
+ str = "Invalid argument range";
+ break;
+ }
+
+ return str;
+}
diff --git a/src/libinput.h b/src/libinput.h
index 73183da8..ead30646 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -1402,6 +1402,40 @@ libinput_device_get_size(struct libinput_device *device,
double *width,
double *height);
+
+/**
+ * @defgroup config Device configuration
+ *
+ * Enable, disable, change and/or check for device-specific features. For
+ * all features, libinput assigns a default based on the hardware
+ * configuration. This default can be obtained with the respective
+ * get_default call.
+ *
+ * Some configuration option may be dependent on or mutually exclusive with
+ * with other options. The behavior in those cases is
+ * implementation-defined, the caller must ensure that the options are set
+ * in the right order.
+ */
+
+enum libinput_config_status {
+ LIBINPUT_CONFIG_STATUS_SUCCESS = 0, /**< Config applied successfully */
+ LIBINPUT_CONFIG_STATUS_UNSUPPORTED, /**< Configuration not available on
+ this device */
+ LIBINPUT_CONFIG_STATUS_INVALID, /**< Invalid parameter range */
+};
+
+/**
+ * @ingroup config Device configuration
+ *
+ * Return a string describing the error.
+ *
+ * @param status The status to translate to a string
+ * @return A human-readable string representing the error or NULL for an
+ * invalid status.
+ */
+const char *
+libinput_config_status_to_str(enum libinput_config_status status);
+
#ifdef __cplusplus
}
#endif
diff --git a/test/misc.c b/test/misc.c
index 30b8d452..7e028321 100644
--- a/test/misc.c
+++ b/test/misc.c
@@ -26,6 +26,7 @@
#include <errno.h>
#include <fcntl.h>
#include <libinput.h>
+#include <libinput-util.h>
#include <unistd.h>
#include "litest.h"
@@ -409,6 +410,27 @@ START_TEST(device_ids)
}
END_TEST
+START_TEST(config_status_string)
+{
+ const char *strs[3];
+ const char *invalid;
+ size_t i, j;
+
+ strs[0] = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_SUCCESS);
+ strs[1] = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_UNSUPPORTED);
+ strs[2] = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_INVALID);
+
+ for (i = 0; i < ARRAY_LENGTH(strs) - 1; i++)
+ for (j = i + 1; j < ARRAY_LENGTH(strs); j++)
+ ck_assert_str_ne(strs[i], strs[j]);
+
+ invalid = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_INVALID + 1);
+ ck_assert(invalid == NULL);
+ invalid = libinput_config_status_to_str(LIBINPUT_CONFIG_STATUS_SUCCESS - 1);
+ ck_assert(invalid == NULL);
+}
+END_TEST
+
int main (int argc, char **argv) {
litest_add_no_device("events:conversion", event_conversion_device_notify);
litest_add_no_device("events:conversion", event_conversion_pointer);
@@ -417,6 +439,7 @@ int main (int argc, char **argv) {
litest_add_no_device("events:conversion", event_conversion_touch);
litest_add_no_device("context:refcount", context_ref_counting);
litest_add("device:id", device_ids, LITEST_ANY, LITEST_ANY);
+ litest_add_no_device("config:status string", config_status_string);
return litest_run(argc, argv);
}