summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2017-06-01 15:26:51 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2017-06-02 10:53:49 +1000
commitb5e3fd04b2ab667e844e34082f8af9b277728774 (patch)
tree46df2c2db97373c51ee705e18f9ac04c2caacfb8 /src
parente0ac0153f78fb822f56172fc8fa836907aa06e37 (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.c37
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;