From 97a6bf10f95859940379787da2635b69399db40c Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 18 Jun 2014 19:51:19 +1000 Subject: Change the logging system to be per-context Rather than a single global logging function, make the logging dependent on the individual context. This way we won't stomp on each other's feet in the (admittedly unusual) case of having multiple libinput contexts. The userdata argument to the log handler was dropped. The caller has a ref to the libinput context now, any userdata can be attached to that context instead. Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede --- test/log.c | 86 ++++++++++++++++---------------------------------------------- 1 file changed, 22 insertions(+), 64 deletions(-) (limited to 'test/log.c') diff --git a/test/log.c b/test/log.c index a2818207..02ed4f08 100644 --- a/test/log.c +++ b/test/log.c @@ -32,7 +32,7 @@ #include "litest.h" static int log_handler_called; -static void *log_handler_userdata; +static struct libinput *log_handler_context; static int open_restricted(const char *path, int flags, void *data) { @@ -51,130 +51,90 @@ const struct libinput_interface simple_interface = { }; static void -simple_log_handler(enum libinput_log_priority priority, - void *userdata, +simple_log_handler(struct libinput *libinput, + enum libinput_log_priority priority, const char *format, va_list args) { log_handler_called++; - ck_assert(userdata == log_handler_userdata); + if (log_handler_context) + ck_assert(libinput == log_handler_context); ck_assert(format != NULL); } START_TEST(log_default_priority) { enum libinput_log_priority pri; - - pri = libinput_log_get_priority(); - - ck_assert_int_eq(pri, LIBINPUT_LOG_PRIORITY_ERROR); -} -END_TEST - -START_TEST(log_handler_invoked) -{ struct libinput *li; - enum libinput_log_priority pri = libinput_log_get_priority(); - - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_DEBUG); - libinput_log_set_handler(simple_log_handler, NULL); - log_handler_userdata = NULL; li = libinput_path_create_context(&simple_interface, NULL); - libinput_path_add_device(li, "/tmp"); + pri = libinput_log_get_priority(li); - ck_assert_int_gt(log_handler_called, 0); - log_handler_called = 0; + ck_assert_int_eq(pri, LIBINPUT_LOG_PRIORITY_ERROR); libinput_destroy(li); - libinput_log_set_priority(pri); } END_TEST -START_TEST(log_userdata_NULL) +START_TEST(log_handler_invoked) { struct libinput *li; - enum libinput_log_priority pri = libinput_log_get_priority(); - - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_DEBUG); - libinput_log_set_handler(simple_log_handler, NULL); - log_handler_userdata = NULL; li = libinput_path_create_context(&simple_interface, NULL); - libinput_path_add_device(li, "/tmp"); - ck_assert_int_gt(log_handler_called, 0); - log_handler_called = 0; - - libinput_destroy(li); - - libinput_log_set_priority(pri); -} -END_TEST - -START_TEST(log_userdata) -{ - struct libinput *li; - enum libinput_log_priority pri = libinput_log_get_priority(); - - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_DEBUG); - libinput_log_set_handler(simple_log_handler, &li); - log_handler_userdata = &li; + libinput_log_set_priority(li, LIBINPUT_LOG_PRIORITY_DEBUG); + libinput_log_set_handler(li, simple_log_handler); + log_handler_context = li; - li = libinput_path_create_context(&simple_interface, NULL); libinput_path_add_device(li, "/tmp"); ck_assert_int_gt(log_handler_called, 0); log_handler_called = 0; libinput_destroy(li); - libinput_log_set_priority(pri); + + log_handler_context = NULL; } END_TEST START_TEST(log_handler_NULL) { struct libinput *li; - enum libinput_log_priority pri = libinput_log_get_priority(); - - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_DEBUG); - libinput_log_set_handler(NULL, NULL); - log_handler_userdata = NULL; li = libinput_path_create_context(&simple_interface, NULL); + libinput_log_set_priority(li, LIBINPUT_LOG_PRIORITY_DEBUG); + libinput_log_set_handler(li, NULL); + libinput_path_add_device(li, "/tmp"); ck_assert_int_eq(log_handler_called, 0); log_handler_called = 0; - libinput_log_set_handler(simple_log_handler, NULL); libinput_destroy(li); - libinput_log_set_priority(pri); } END_TEST START_TEST(log_priority) { struct libinput *li; - enum libinput_log_priority pri = libinput_log_get_priority(); - - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_ERROR); - libinput_log_set_handler(simple_log_handler, NULL); - log_handler_userdata = NULL; li = libinput_path_create_context(&simple_interface, NULL); + libinput_log_set_priority(li, LIBINPUT_LOG_PRIORITY_ERROR); + libinput_log_set_handler(li, simple_log_handler); + log_handler_context = li; + libinput_path_add_device(li, "/tmp"); ck_assert_int_eq(log_handler_called, 0); - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_INFO); + libinput_log_set_priority(li, LIBINPUT_LOG_PRIORITY_INFO); libinput_path_add_device(li, "/tmp"); ck_assert_int_gt(log_handler_called, 0); log_handler_called = 0; libinput_destroy(li); - libinput_log_set_priority(pri); + log_handler_context = NULL; } END_TEST @@ -182,8 +142,6 @@ int main (int argc, char **argv) { litest_add_no_device("log:defaults", log_default_priority); litest_add_no_device("log:logging", log_handler_invoked); litest_add_no_device("log:logging", log_handler_NULL); - litest_add_no_device("log:logging", log_userdata); - litest_add_no_device("log:logging", log_userdata_NULL); litest_add_no_device("log:logging", log_priority); return litest_run(argc, argv); -- cgit v1.2.1