On Tue, Jul 01, 2014 at 03:56:19PM +1000, Peter Hutterer wrote: > Signed-off-by: Peter Hutterer <[email protected]> > --- > Changes to v1: > - actually implement libinput_config_status_to_str > - add a basic test for it
Except for a minor nit, Reviewed-by: Jonas Ã…dahl <[email protected]> > > src/libinput.c | 20 ++++++++++++++++++++ > src/libinput.h | 33 +++++++++++++++++++++++++++++++++ > test/misc.c | 23 +++++++++++++++++++++++ > 3 files changed, 76 insertions(+) > > diff --git a/src/libinput.c b/src/libinput.c > index 44f4f23..3888f43 100644 > --- a/src/libinput.c > +++ b/src/libinput.c > @@ -1237,3 +1237,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 ff67ce7..3eaea91 100644 > --- a/src/libinput.h > +++ b/src/libinput.h > @@ -1361,6 +1361,39 @@ libinput_device_get_size(struct libinput_device > *device, > double *width, > double *height); > > + > +/** > + * @defgroup config Device configuration > + * > + * Enable, disable and check for device-specific features. For all features, Well its really Enable, disable, adjust/configure/change and check. > + * 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 bea7e88..c5a8805 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" > @@ -390,6 +391,27 @@ START_TEST(context_ref_counting) > } > 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); > @@ -397,6 +419,7 @@ int main (int argc, char **argv) { > litest_add_no_device("events:conversion", event_conversion_key); > litest_add_no_device("events:conversion", event_conversion_touch); > litest_add_no_device("context:refcount", context_ref_counting); > + litest_add_no_device("config:status string", config_status_string); > > return litest_run(argc, argv); > } > -- > 1.9.3 > > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
