diff --git a/configure.ac b/configure.ac index b4511fcb..648bee83 100644 --- a/configure.ac +++ b/configure.ac @@ -160,7 +160,7 @@ AC_ARG_ENABLE(libinput-backend, [ --enable-libinput-backend],, AM_CONDITIONAL([ENABLE_LIBINPUT_BACKEND], [test x$enable_libinput_backend = xyes]) if test x$enable_libinput_backend = xyes; then AC_DEFINE([BUILD_LIBINPUT_BACKEND], [1], [Build the libinput input device backend]) - PKG_CHECK_MODULES(LIBINPUT_BACKEND, [libinput >= 0.3.0]) + PKG_CHECK_MODULES(LIBINPUT_BACKEND, [libinput >= 0.4.0]) fi diff --git a/src/libinput-seat.c b/src/libinput-seat.c index d59ae429..09cf7c7e 100644 --- a/src/libinput-seat.c +++ b/src/libinput-seat.c @@ -252,8 +252,9 @@ udev_input_enable(struct udev_input *input) } static void -libinput_log_func(enum libinput_log_priority priority, void *user_data, - const char *format, va_list args) +libinput_log_func(struct libinput *libinput, + enum libinput_log_priority priority, + const char *format, va_list args) { weston_vlog(format, args); } @@ -268,25 +269,34 @@ udev_input_init(struct udev_input *input, struct weston_compositor *c, struct ud input->compositor = c; - libinput_log_set_handler(&libinput_log_func, NULL); - log_priority = getenv("WESTON_LIBINPUT_LOG_PRIORITY"); + input->libinput = libinput_udev_create_context(&libinput_interface, + input, udev); + if (!input->libinput) { + return -1; + } + + libinput_log_set_handler(input->libinput, &libinput_log_func); + if (log_priority) { if (strcmp(log_priority, "debug") == 0) { - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_DEBUG); + libinput_log_set_priority(input->libinput, + LIBINPUT_LOG_PRIORITY_DEBUG); } else if (strcmp(log_priority, "info") == 0) { - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_INFO); + libinput_log_set_priority(input->libinput, + LIBINPUT_LOG_PRIORITY_INFO); } else if (strcmp(log_priority, "error") == 0) { - libinput_log_set_priority(LIBINPUT_LOG_PRIORITY_ERROR); + libinput_log_set_priority(input->libinput, + LIBINPUT_LOG_PRIORITY_ERROR); } } - input->libinput = libinput_udev_create_for_seat(&libinput_interface, input, - udev, seat_id); - if (!input->libinput) { + if (libinput_udev_assign_seat(input->libinput, seat_id) != 0) { + libinput_unref(input->libinput); return -1; } + process_events(input); return udev_input_enable(input); @@ -300,7 +310,7 @@ udev_input_destroy(struct udev_input *input) wl_event_source_remove(input->libinput_source); wl_list_for_each_safe(seat, next, &input->compositor->seat_list, base.link) udev_seat_destroy(seat); - libinput_destroy(input->libinput); + libinput_unref(input->libinput); } static void