From 26714b4718ec877418c9a8faa111d8b9def7b0a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 2 Jun 2014 23:15:48 +0200 Subject: [PATCH] libinput: Use floating point instead of fixed point numbers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also update configure.ac to require libinput 0.3 when enabled, as it is the version where double replaced li_fixed_t. Signed-off-by: Jonas Ã…dahl --- configure.ac | 2 +- src/libinput-device.c | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/configure.ac b/configure.ac index e2bf38da..16e813d1 100644 --- a/configure.ac +++ b/configure.ac @@ -159,7 +159,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.1.0]) + PKG_CHECK_MODULES(LIBINPUT_BACKEND, [libinput >= 0.3.0]) fi diff --git a/src/libinput-device.c b/src/libinput-device.c index 4605a769..2ba4ec37 100644 --- a/src/libinput-device.c +++ b/src/libinput-device.c @@ -73,11 +73,14 @@ handle_pointer_motion(struct libinput_device *libinput_device, { 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 @@ handle_pointer_motion_absolute( 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 @@ handle_pointer_axis(struct libinput_device *libinput_device, { 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 @@ handle_touch_with_coords(struct libinput_device *libinput_device, 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);