diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2017-06-01 15:26:51 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2017-06-02 10:53:49 +1000 |
commit | b5e3fd04b2ab667e844e34082f8af9b277728774 (patch) | |
tree | 46df2c2db97373c51ee705e18f9ac04c2caacfb8 /src | |
parent | e0ac0153f78fb822f56172fc8fa836907aa06e37 (diff) |
evdev: hook up the libevdev log handler
Make sure any messages from libevdev end up in the same place as libinput's
messages
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/evdev.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/evdev.c b/src/evdev.c index 02ed4f1..7fac2b2 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2867,6 +2867,38 @@ evdev_pre_configure_model_quirks(struct evdev_device *device) libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE); } +static void +libevdev_log_func(const struct libevdev *evdev, + enum libevdev_log_priority priority, + void *data, + const char *file, + int line, + const char *func, + const char *format, + va_list args) +{ + struct libinput *libinput = data; + enum libinput_log_priority pri; + const char prefix[] = "libevdev: "; + char fmt[strlen(format) + strlen(prefix) + 1]; + + switch (priority) { + case LIBEVDEV_LOG_ERROR: + pri = LIBINPUT_LOG_PRIORITY_ERROR; + break; + case LIBEVDEV_LOG_INFO: + pri = LIBINPUT_LOG_PRIORITY_INFO; + break; + case LIBEVDEV_LOG_DEBUG: + pri = LIBINPUT_LOG_PRIORITY_DEBUG; + break; + } + + snprintf(fmt, sizeof(fmt), "%s%s", prefix, format); + + log_msg_va(libinput, pri, fmt, args); +} + struct evdev_device * evdev_device_create(struct libinput_seat *seat, struct udev_device *udev_device) @@ -2910,7 +2942,10 @@ evdev_device_create(struct libinput_seat *seat, goto err; libevdev_set_clock_id(device->evdev, CLOCK_MONOTONIC); - + libevdev_set_device_log_function(device->evdev, + libevdev_log_func, + LIBEVDEV_LOG_ERROR, + libinput); device->seat_caps = 0; device->is_mt = 0; device->mtdev = NULL; |