summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/evdev-mt-touchpad-buttons.c15
-rw-r--r--src/evdev-mt-touchpad-tap.c13
-rw-r--r--src/evdev.c23
-rw-r--r--src/libinput-private.h23
-rw-r--r--src/libinput.c48
-rw-r--r--src/libinput.h19
-rw-r--r--src/path.c20
-rw-r--r--src/timer.c4
-rw-r--r--src/udev-seat.c17
-rw-r--r--test/litest.c13
-rw-r--r--test/log.c86
-rw-r--r--tools/event-debug.c33
12 files changed, 160 insertions, 154 deletions
diff --git a/src/evdev-mt-touchpad-buttons.c b/src/evdev-mt-touchpad-buttons.c
index 45d5d703..2ac231c7 100644
--- a/src/evdev-mt-touchpad-buttons.c
+++ b/src/evdev-mt-touchpad-buttons.c
@@ -452,6 +452,7 @@ tp_button_handle_event(struct tp_dispatch *tp,
enum button_event event,
uint64_t time)
{
+ struct libinput *libinput = tp->device->base.seat->libinput;
enum button_state current = t->button.state;
switch(t->button.state) {
@@ -485,7 +486,8 @@ tp_button_handle_event(struct tp_dispatch *tp,
}
if (current != t->button.state)
- log_debug("button state: from %s, event %s to %s\n",
+ log_debug(libinput,
+ "button state: from %s, event %s to %s\n",
button_state_to_str(current),
button_event_to_str(event),
button_state_to_str(t->button.state));
@@ -538,11 +540,13 @@ tp_process_button(struct tp_dispatch *tp,
const struct input_event *e,
uint64_t time)
{
+ struct libinput *libinput = tp->device->base.seat->libinput;
uint32_t mask = 1 << (e->code - BTN_LEFT);
/* Ignore other buttons on clickpads */
if (tp->buttons.is_clickpad && e->code != BTN_LEFT) {
- log_bug_kernel("received %s button event on a clickpad\n",
+ log_bug_kernel(libinput,
+ "received %s button event on a clickpad\n",
libevdev_event_code_get_name(EV_KEY, e->code));
return 0;
}
@@ -562,6 +566,7 @@ int
tp_init_buttons(struct tp_dispatch *tp,
struct evdev_device *device)
{
+ struct libinput *libinput = tp->device->base.seat->libinput;
struct tp_touch *t;
int width, height;
double diagonal;
@@ -575,10 +580,12 @@ tp_init_buttons(struct tp_dispatch *tp,
if (libevdev_has_event_code(device->evdev, EV_KEY, BTN_MIDDLE) ||
libevdev_has_event_code(device->evdev, EV_KEY, BTN_RIGHT)) {
if (tp->buttons.is_clickpad)
- log_bug_kernel("clickpad advertising right button\n");
+ log_bug_kernel(libinput,
+ "clickpad advertising right button\n");
} else {
if (!tp->buttons.is_clickpad)
- log_bug_kernel("non clickpad without right button?\n");
+ log_bug_kernel(libinput,
+ "non clickpad without right button?\n");
}
absinfo_x = device->abs.absinfo_x;
diff --git a/src/evdev-mt-touchpad-tap.c b/src/evdev-mt-touchpad-tap.c
index 34bb0d0b..25412184 100644
--- a/src/evdev-mt-touchpad-tap.c
+++ b/src/evdev-mt-touchpad-tap.c
@@ -130,6 +130,7 @@ tp_tap_clear_timer(struct tp_dispatch *tp)
static void
tp_tap_idle_handle_event(struct tp_dispatch *tp, enum tap_event event, uint64_t time)
{
+ struct libinput *libinput = tp->device->base.seat->libinput;
switch (event) {
case TAP_EVENT_TOUCH:
@@ -138,7 +139,8 @@ tp_tap_idle_handle_event(struct tp_dispatch *tp, enum tap_event event, uint64_t
break;
case TAP_EVENT_RELEASE:
case TAP_EVENT_MOTION:
- log_bug_libinput("invalid event, no fingers are down\n");
+ log_bug_libinput(libinput,
+ "invalid event, no fingers are down\n");
break;
case TAP_EVENT_TIMEOUT:
break;
@@ -197,11 +199,13 @@ tp_tap_hold_handle_event(struct tp_dispatch *tp, enum tap_event event, uint64_t
static void
tp_tap_tapped_handle_event(struct tp_dispatch *tp, enum tap_event event, uint64_t time)
{
+ struct libinput *libinput = tp->device->base.seat->libinput;
switch (event) {
case TAP_EVENT_MOTION:
case TAP_EVENT_RELEASE:
- log_bug_libinput("invalid event when fingers are up\n");
+ log_bug_libinput(libinput,
+ "invalid event when fingers are up\n");
break;
case TAP_EVENT_TOUCH:
tp->tap.state = TAP_STATE_DRAGGING_OR_DOUBLETAP;
@@ -426,7 +430,9 @@ tp_tap_dead_handle_event(struct tp_dispatch *tp, enum tap_event event, uint64_t
static void
tp_tap_handle_event(struct tp_dispatch *tp, enum tap_event event, uint64_t time)
{
+ struct libinput *libinput = tp->device->base.seat->libinput;
enum tp_tap_state current;
+
if (!tp->tap.enabled)
return;
@@ -477,7 +483,8 @@ tp_tap_handle_event(struct tp_dispatch *tp, enum tap_event event, uint64_t time)
if (tp->tap.state == TAP_STATE_IDLE || tp->tap.state == TAP_STATE_DEAD)
tp_tap_clear_timer(tp);
- log_debug("tap state: %s → %s → %s\n",
+ log_debug(libinput,
+ "tap state: %s → %s → %s\n",
tap_state_to_str(current),
tap_event_to_str(event),
tap_state_to_str(tp->tap.state));
diff --git a/src/evdev.c b/src/evdev.c
index 63eaa4df..f72bd43e 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -115,6 +115,7 @@ evdev_device_transform_y(struct evdev_device *device,
static void
evdev_flush_pending_event(struct evdev_device *device, uint64_t time)
{
+ struct libinput *libinput = device->base.seat->libinput;
struct motion_params motion;
int32_t cx, cy;
double x, y;
@@ -147,7 +148,8 @@ evdev_flush_pending_event(struct evdev_device *device, uint64_t time)
break;
if (device->mt.slots[slot].seat_slot != -1) {
- log_bug_kernel("%s: Driver sent multiple touch down for the "
+ log_bug_kernel(libinput,
+ "%s: Driver sent multiple touch down for the "
"same slot", device->devnode);
break;
}
@@ -196,7 +198,8 @@ evdev_flush_pending_event(struct evdev_device *device, uint64_t time)
break;
if (device->abs.seat_slot != -1) {
- log_bug_kernel("%s: Driver sent multiple touch down for the "
+ log_bug_kernel(libinput,
+ "%s: Driver sent multiple touch down for the "
"same slot", device->devnode);
break;
}
@@ -591,6 +594,7 @@ configure_pointer_acceleration(struct evdev_device *device)
static int
evdev_configure_device(struct evdev_device *device)
{
+ struct libinput *libinput = device->base.seat->libinput;
struct libevdev *evdev = device->evdev;
const struct input_absinfo *absinfo;
struct input_absinfo fixed;
@@ -696,7 +700,8 @@ evdev_configure_device(struct evdev_device *device)
!libevdev_has_event_code(evdev, EV_KEY, BTN_TOOL_PEN) &&
(has_abs || has_mt)) {
device->dispatch = evdev_mt_touchpad_create(device);
- log_info("input device '%s', %s is a touchpad\n",
+ log_info(libinput,
+ "input device '%s', %s is a touchpad\n",
device->devname, device->devnode);
}
for (i = KEY_ESC; i < KEY_MAX; i++) {
@@ -725,7 +730,8 @@ evdev_configure_device(struct evdev_device *device)
device->seat_caps |= EVDEV_DEVICE_POINTER;
- log_info("input device '%s', %s is a pointer caps =%s%s%s\n",
+ log_info(libinput,
+ "input device '%s', %s is a pointer caps =%s%s%s\n",
device->devname, device->devnode,
has_abs ? " absolute-motion" : "",
has_rel ? " relative-motion": "",
@@ -733,12 +739,14 @@ evdev_configure_device(struct evdev_device *device)
}
if (has_keyboard) {
device->seat_caps |= EVDEV_DEVICE_KEYBOARD;
- log_info("input device '%s', %s is a keyboard\n",
+ log_info(libinput,
+ "input device '%s', %s is a keyboard\n",
device->devname, device->devnode);
}
if (has_touch && !has_button) {
device->seat_caps |= EVDEV_DEVICE_TOUCH;
- log_info("input device '%s', %s is a touch device\n",
+ log_info(libinput,
+ "input device '%s', %s is a touch device\n",
device->devname, device->devnode);
}
@@ -761,7 +769,8 @@ evdev_device_create(struct libinput_seat *seat,
* read. mtdev_get() also expects this. */
fd = open_restricted(libinput, devnode, O_RDWR | O_NONBLOCK);
if (fd < 0) {
- log_info("opening input device '%s' failed (%s).\n",
+ log_info(libinput,
+ "opening input device '%s' failed (%s).\n",
devnode, strerror(-fd));
return NULL;
}
diff --git a/src/libinput-private.h b/src/libinput-private.h
index 4a92fb95..e3d9bb1e 100644
--- a/src/libinput-private.h
+++ b/src/libinput-private.h
@@ -56,6 +56,9 @@ struct libinput {
const struct libinput_interface *interface;
const struct libinput_interface_backend *interface_backend;
+
+ libinput_log_handler log_handler;
+ enum libinput_log_priority log_priority;
void *user_data;
};
@@ -88,17 +91,21 @@ struct libinput_device {
typedef void (*libinput_source_dispatch_t)(void *data);
-#define log_debug(...) log_msg(LIBINPUT_LOG_PRIORITY_DEBUG, __VA_ARGS__)
-#define log_info(...) log_msg(LIBINPUT_LOG_PRIORITY_INFO, __VA_ARGS__)
-#define log_error(...) log_msg(LIBINPUT_LOG_PRIORITY_ERROR, __VA_ARGS__)
-#define log_bug_kernel(...) log_msg(LIBINPUT_LOG_PRIORITY_ERROR, "kernel bug: " __VA_ARGS__)
-#define log_bug_libinput(...) log_msg(LIBINPUT_LOG_PRIORITY_ERROR, "libinput bug: " __VA_ARGS__);
-#define log_bug_client(...) log_msg(LIBINPUT_LOG_PRIORITY_ERROR, "client bug: " __VA_ARGS__);
+#define log_debug(li_, ...) log_msg((li_), LIBINPUT_LOG_PRIORITY_DEBUG, __VA_ARGS__)
+#define log_info(li_, ...) log_msg((li_), LIBINPUT_LOG_PRIORITY_INFO, __VA_ARGS__)
+#define log_error(li_, ...) log_msg((li_), LIBINPUT_LOG_PRIORITY_ERROR, __VA_ARGS__)
+#define log_bug_kernel(li_, ...) log_msg((li_), LIBINPUT_LOG_PRIORITY_ERROR, "kernel bug: " __VA_ARGS__)
+#define log_bug_libinput(li_, ...) log_msg((li_), LIBINPUT_LOG_PRIORITY_ERROR, "libinput bug: " __VA_ARGS__);
+#define log_bug_client(li_, ...) log_msg((li_), LIBINPUT_LOG_PRIORITY_ERROR, "client bug: " __VA_ARGS__);
void
-log_msg(enum libinput_log_priority priority, const char *format, ...);
+log_msg(struct libinput *libinput,
+ enum libinput_log_priority priority,
+ const char *format, ...);
+
void
-log_msg_va(enum libinput_log_priority priority,
+log_msg_va(struct libinput *libinput,
+ enum libinput_log_priority priority,
const char *format,
va_list args);
diff --git a/src/libinput.c b/src/libinput.c
index b468aa76..91557776 100644
--- a/src/libinput.c
+++ b/src/libinput.c
@@ -81,8 +81,8 @@ struct libinput_event_touch {
};
static void
-libinput_default_log_func(enum libinput_log_priority priority,
- void *data,
+libinput_default_log_func(struct libinput *libinput,
+ enum libinput_log_priority priority,
const char *format, va_list args)
{
const char *prefix;
@@ -98,55 +98,47 @@ libinput_default_log_func(enum libinput_log_priority priority,
vfprintf(stderr, format, args);
}
-struct log_data {
- enum libinput_log_priority priority;
- libinput_log_handler handler;
- void *user_data;
-};
-
-static struct log_data log_data = {
- .priority = LIBINPUT_LOG_PRIORITY_ERROR,
- .handler = libinput_default_log_func,
- .user_data = NULL,
-};
-
void
-log_msg_va(enum libinput_log_priority priority,
+log_msg_va(struct libinput *libinput,
+ enum libinput_log_priority priority,
const char *format,
va_list args)
{
- if (log_data.handler && log_data.priority <= priority)
- log_data.handler(priority, log_data.user_data, format, args);
+ if (libinput->log_handler &&
+ libinput->log_priority <= priority)
+ libinput->log_handler(libinput, priority, format, args);
}
void
-log_msg(enum libinput_log_priority priority, const char *format, ...)
+log_msg(struct libinput *libinput,
+ enum libinput_log_priority priority,
+ const char *format, ...)
{
va_list args;
va_start(args, format);
- log_msg_va(priority, format, args);
+ log_msg_va(libinput, priority, format, args);
va_end(args);
}
LIBINPUT_EXPORT void
-libinput_log_set_priority(enum libinput_log_priority priority)
+libinput_log_set_priority(struct libinput *libinput,
+ enum libinput_log_priority priority)
{
- log_data.priority = priority;
+ libinput->log_priority = priority;
}
LIBINPUT_EXPORT enum libinput_log_priority
-libinput_log_get_priority(void)
+libinput_log_get_priority(const struct libinput *libinput)
{
- return log_data.priority;
+ return libinput->log_priority;
}
LIBINPUT_EXPORT void
-libinput_log_set_handler(libinput_log_handler log_handler,
- void *user_data)
+libinput_log_set_handler(struct libinput *libinput,
+ libinput_log_handler log_handler)
{
- log_data.handler = log_handler;
- log_data.user_data = user_data;
+ libinput->log_handler = log_handler;
}
static void
@@ -499,6 +491,8 @@ libinput_init(struct libinput *libinput,
return -1;
}
+ libinput->log_handler = libinput_default_log_func;
+ libinput->log_priority = LIBINPUT_LOG_PRIORITY_ERROR;
libinput->interface = interface;
libinput->interface_backend = interface_backend;
libinput->user_data = user_data;
diff --git a/src/libinput.h b/src/libinput.h
index 678e49dc..5e75cc2c 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -1032,13 +1032,15 @@ libinput_destroy(struct libinput *libinput);
*
* The default log priority is LIBINPUT_LOG_PRIORITY_ERROR.
*
+ * @param libinput A previously initialized libinput context
* @param priority The minimum priority of log messages to print.
*
* @see libinput_log_set_handler
* @see libinput_log_get_priority
*/
void
-libinput_log_set_priority(enum libinput_log_priority priority);
+libinput_log_set_priority(struct libinput *libinput,
+ enum libinput_log_priority priority);
/**
* @ingroup base
@@ -1048,30 +1050,30 @@ libinput_log_set_priority(enum libinput_log_priority priority);
*
* The default log priority is LIBINPUT_LOG_PRIORITY_ERROR.
*
+ * @param libinput A previously initialized libinput context
* @return The minimum priority of log messages to print.
*
* @see libinput_log_set_handler
* @see libinput_log_set_priority
*/
enum libinput_log_priority
-libinput_log_get_priority(void);
+libinput_log_get_priority(const struct libinput *libinput);
/**
* @ingroup base
*
* Log handler type for custom logging.
*
+ * @param libinput The libinput context
* @param priority The priority of the current message
- * @param user_data Caller-specific data pointer as previously passed into
- * libinput_log_set_handler()
* @param format Message format in printf-style
* @param args Message arguments
*
* @see libinput_set_log_priority
* @see libinput_log_set_handler
*/
-typedef void (*libinput_log_handler)(enum libinput_log_priority priority,
- void *user_data,
+typedef void (*libinput_log_handler)(struct libinput *libinput,
+ enum libinput_log_priority priority,
const char *format, va_list args)
LIBINPUT_ATTRIBUTE_PRINTF(3, 0);
@@ -1084,6 +1086,7 @@ typedef void (*libinput_log_handler)(enum libinput_log_priority priority,
*
* The default log handler prints to stderr.
*
+ * @param libinput A previously initialized libinput context
* @param log_handler The log handler for library messages.
* @param user_data Caller-specific data pointer, passed into the log
* handler.
@@ -1091,8 +1094,8 @@ typedef void (*libinput_log_handler)(enum libinput_log_priority priority,
* @see libinput_log_set_handler
*/
void
-libinput_log_set_handler(libinput_log_handler log_handler,
- void *user_data);
+libinput_log_set_handler(struct libinput *libinput,
+ libinput_log_handler log_handler);
/**
* @defgroup seat Initialization and manipulation of seats
diff --git a/src/path.c b/src/path.c
index 27e5ad63..e9c0ee8d 100644
--- a/src/path.c
+++ b/src/path.c
@@ -160,7 +160,9 @@ path_device_enable(struct path_input *input, const char *devnode)
if (path_get_udev_properties(devnode, &sysname,
&seat_name, &seat_logical_name) == -1) {
- log_info("failed to obtain sysname for device '%s'.\n", devnode);
+ log_info(&input->base,
+ "failed to obtain sysname for device '%s'.\n",
+ devnode);
return NULL;
}
@@ -171,7 +173,9 @@ path_device_enable(struct path_input *input, const char *devnode)
} else {
seat = path_seat_create(input, seat_name, seat_logical_name);
if (!seat) {
- log_info("failed to create seat for device '%s'.\n", devnode);
+ log_info(&input->base,
+ "failed to create seat for device '%s'.\n",
+ devnode);
goto out;
}
}
@@ -181,10 +185,14 @@ path_device_enable(struct path_input *input, const char *devnode)
if (device == EVDEV_UNHANDLED_DEVICE) {
device = NULL;
- log_info("not using input device '%s'.\n", devnode);
+ log_info(&input->base,
+ "not using input device '%s'.\n",
+ devnode);
goto out;
} else if (device == NULL) {
- log_info("failed to create input device '%s'.\n", devnode);
+ log_info(&input->base,
+ "failed to create input device '%s'.\n",
+ devnode);
goto out;
}
@@ -264,7 +272,7 @@ libinput_path_add_device(struct libinput *libinput,
struct libinput_device *device;
if (libinput->interface_backend != &interface_backend) {
- log_bug_client("Mismatching backends.\n");
+ log_bug_client(libinput, "Mismatching backends.\n");
return NULL;
}
@@ -301,7 +309,7 @@ libinput_path_remove_device(struct libinput_device *device)
struct path_device *dev;
if (libinput->interface_backend != &interface_backend) {
- log_bug_client("Mismatching backends.\n");
+ log_bug_client(libinput, "Mismatching backends.\n");
return;
}
diff --git a/src/timer.c b/src/timer.c
index 65fdd17a..f5461858 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -59,7 +59,7 @@ libinput_timer_arm_timer_fd(struct libinput *libinput)
r = timerfd_settime(libinput->timer.fd, TFD_TIMER_ABSTIME, &its, NULL);
if (r)
- log_error("timerfd_settime error: %s\n", strerror(errno));
+ log_error(libinput, "timerfd_settime error: %s\n", strerror(errno));
}
void
@@ -96,7 +96,7 @@ libinput_timer_handler(void *data)
r = clock_gettime(CLOCK_MONOTONIC, &ts);
if (r) {
- log_error("clock_gettime error: %s\n", strerror(errno));
+ log_error(libinput, "clock_gettime error: %s\n", strerror(errno));
return;
}
diff --git a/src/udev-seat.c b/src/udev-seat.c
index 89160ff8..9082697f 100644
--- a/src/udev-seat.c
+++ b/src/udev-seat.c
@@ -80,10 +80,10 @@ device_added(struct udev_device *udev_device, struct udev_input *input)
libinput_seat_unref(&seat->base);
if (device == EVDEV_UNHANDLED_DEVICE) {
- log_info("not using input device '%s'.\n", devnode);
+ log_info(&input->base, "not using input device '%s'.\n", devnode);
return 0;
} else if (device == NULL) {
- log_info("failed to create input device '%s'.\n", devnode);
+ log_info(&input->base, "failed to create input device '%s'.\n", devnode);
return 0;
}
@@ -100,7 +100,8 @@ device_added(struct udev_device *udev_device, struct udev_input *input)
&device->abs.calibration[4],
&device->abs.calibration[5]) == 6) {
device->abs.apply_calibration = 1;
- log_info("Applying calibration: %f %f %f %f %f %f\n",
+ log_info(&input->base,
+ "Applying calibration: %f %f %f %f %f %f\n",
device->abs.calibration[0],
device->abs.calibration[1],
device->abs.calibration[2],
@@ -128,7 +129,8 @@ device_removed(struct udev_device *udev_device, struct udev_input *input)
list_for_each_safe(device, next,
&seat->base.devices_list, base.link) {
if (!strcmp(device->devnode, devnode)) {
- log_info("input device %s, %s removed\n",
+ log_info(&input->base,
+ "input device %s, %s removed\n",
device->devname, device->devnode);
evdev_device_remove(device);
break;
@@ -243,7 +245,8 @@ udev_input_enable(struct libinput *libinput)
input->udev_monitor = udev_monitor_new_from_netlink(udev, "udev");
if (!input->udev_monitor) {
- log_info("udev: failed to create the udev monitor\n");
+ log_info(libinput,
+ "udev: failed to create the udev monitor\n");
return -1;
}
@@ -251,7 +254,7 @@ udev_input_enable(struct libinput *libinput)
"input", NULL);
if (udev_monitor_enable_receiving(input->udev_monitor)) {
- log_info("udev: failed to bind the udev monitor\n");
+ log_info(libinput, "udev: failed to bind the udev monitor\n");
udev_monitor_unref(input->udev_monitor);
input->udev_monitor = NULL;
return -1;
@@ -369,7 +372,7 @@ libinput_udev_assign_seat(struct libinput *libinput,
return -1;
if (libinput->interface_backend != &interface_backend) {
- log_bug_client("Mismatching backends.\n");
+ log_bug_client(libinput, "Mismatching backends.\n");
return -1;
}
diff --git a/test/litest.c b/test/litest.c
index d3f8f0dd..793d72f7 100644
--- a/test/litest.c
+++ b/test/litest.c
@@ -44,6 +44,7 @@
#include "libinput-util.h"
static int in_debugger = -1;
+static int verbose = 0;
struct test {
struct list node;
@@ -250,8 +251,8 @@ litest_list_tests(struct list *tests)
}
static void
-litest_log_handler(enum libinput_log_priority pri,
- void *user_data,
+litest_log_handler(struct libinput *libinput,
+ enum libinput_log_priority pri,
const char *format,
va_list args)
{
@@ -321,8 +322,7 @@ litest_run(int argc, char **argv) {
litest_list_tests(&all_tests);
return 0;
case 'v':
- libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_DEBUG);
- libinput_log_set_handler(litest_log_handler, NULL);
+ verbose = 1;
break;
default:
fprintf(stderr, "usage: %s [--list]\n", argv[0]);
@@ -482,6 +482,11 @@ litest_create_context(void)
struct libinput *libinput =
libinput_path_create_context(&interface, NULL);
ck_assert_notnull(libinput);
+
+ libinput_log_set_handler(libinput, litest_log_handler);
+ if (verbose)
+ libinput_log_set_priority(libinput, LIBINPUT_LOG_PRIORITY_DEBUG);
+
return libinput;
}
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);
diff --git a/tools/event-debug.c b/tools/event-debug.c
index 2547da53..824c6b20 100644
--- a/tools/event-debug.c
+++ b/tools/event-debug.c
@@ -131,6 +131,15 @@ static const struct libinput_interface interface = {
.close_restricted = close_restricted,
};
+static void
+log_handler(struct libinput *li,
+ enum libinput_log_priority priority,
+ const char *format,
+ va_list args)
+{
+ vprintf(format, args);
+}
+
static int
open_udev(struct libinput **li)
{
@@ -146,6 +155,11 @@ open_udev(struct libinput **li)
return 1;
}
+ if (verbose) {
+ libinput_log_set_handler(*li, log_handler);
+ libinput_log_set_priority(*li, LIBINPUT_LOG_PRIORITY_DEBUG);
+ }
+
if (libinput_udev_assign_seat(*li, seat)) {
fprintf(stderr, "Failed to set seat\n");
libinput_destroy(*li);
@@ -166,6 +180,11 @@ open_device(struct libinput **li, const char *path)
return 1;
}
+ if (verbose) {
+ libinput_log_set_handler(*li, log_handler);
+ libinput_log_set_priority(*li, LIBINPUT_LOG_PRIORITY_DEBUG);
+ }
+
device = libinput_path_add_device(*li, path);
if (!device) {
fprintf(stderr, "Failed to initialized device %s\n", path);
@@ -447,15 +466,6 @@ mainloop(struct libinput *li)
close(fds[1].fd);
}
-static void
-log_handler(enum libinput_log_priority priority,
- void *user_data,
- const char *format,
- va_list args)
-{
- vprintf(format, args);
-}
-
int
main(int argc, char **argv)
{
@@ -465,11 +475,6 @@ main(int argc, char **argv)
if (parse_args(argc, argv))
return 1;
- if (verbose) {
- libinput_log_set_handler(log_handler, NULL);
- libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_DEBUG);
- }
-
if (mode == MODE_UDEV) {
if (open_udev(&li))
return 1;