Submitted By:            Armin K. <krejzi at email dot com>
Date:                    2014-07-22
Initial Package Version: 1.18.2
Upstream Status:         Fixed
Origin:                  Upstream
Description:             Fixes building with libinput-0.4.0

--- a/src/libinput-device.c	2014-05-20 01:00:51.000000000 +0200
+++ b/src/libinput-device.c	2014-07-22 18:34:07.960633907 +0200
@@ -73,11 +73,14 @@
 {
 	struct evdev_device *device =
 		libinput_device_get_user_data(libinput_device);
+	wl_fixed_t dx, dy;
 
+	dx = wl_fixed_from_double(libinput_event_pointer_get_dx(pointer_event));
+	dy = wl_fixed_from_double(libinput_event_pointer_get_dy(pointer_event));
 	notify_motion(device->seat,
 		      libinput_event_pointer_get_time(pointer_event),
-		      libinput_event_pointer_get_dx(pointer_event),
-		      libinput_event_pointer_get_dy(pointer_event));
+		      dx,
+		      dy);
 }
 
 static void
@@ -99,10 +102,12 @@
 	width = device->output->current_mode->width;
 	height = device->output->current_mode->height;
 
-	x = libinput_event_pointer_get_absolute_x_transformed(pointer_event,
-							      width);
-	y = libinput_event_pointer_get_absolute_y_transformed(pointer_event,
-							      height);
+	x = wl_fixed_from_double(
+		libinput_event_pointer_get_absolute_x_transformed(pointer_event,
+								  width));
+	y = wl_fixed_from_double(
+		libinput_event_pointer_get_absolute_y_transformed(pointer_event,
+								  height));
 
 	weston_output_transform_coordinate(device->output, x, y, &x, &y);
 	notify_motion_absolute(device->seat, time, x, y);
@@ -127,11 +132,13 @@
 {
 	struct evdev_device *device =
 		libinput_device_get_user_data(libinput_device);
+	double value;
 
+	value = libinput_event_pointer_get_axis_value(pointer_event);
 	notify_axis(device->seat,
 		    libinput_event_pointer_get_time(pointer_event),
 		    libinput_event_pointer_get_axis(pointer_event),
-		    libinput_event_pointer_get_axis_value(pointer_event));
+		    wl_fixed_from_double(value));
 }
 
 static void
@@ -155,8 +162,10 @@
 
 	width = device->output->current_mode->width;
 	height = device->output->current_mode->height;
-	x = libinput_event_touch_get_x_transformed(touch_event, width);
-	y = libinput_event_touch_get_y_transformed(touch_event, height);
+	x = wl_fixed_from_double(
+		libinput_event_touch_get_x_transformed(touch_event, width));
+	y = wl_fixed_from_double(
+		libinput_event_touch_get_y_transformed(touch_event, height));
 
 	weston_output_transform_coordinate(device->output,
 					   x, y, &x, &y);
--- a/src/libinput-seat.c	2014-05-20 01:00:51.000000000 +0200
+++ b/src/libinput-seat.c	2014-07-22 18:34:54.667471080 +0200
@@ -252,8 +252,9 @@
 }
 
 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 @@
 
 	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 @@
 	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
