evdev: hook up the libevdev log handler
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 1 Jun 2017 05:26:51 +0000 (15:26 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Fri, 2 Jun 2017 00:53:49 +0000 (10:53 +1000)
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>
src/evdev.c

index 02ed4f1ab1628fdc44c7d8707956f69aae6b820f..7fac2b2f4ea6b24d32a86d3ddccc064b513bdae2 100644 (file)
@@ -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;