summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2014-06-02 23:15:48 +0200
committerJonas Ådahl <jadahl@gmail.com>2014-06-09 22:46:45 +0200
commit26714b4718ec877418c9a8faa111d8b9def7b0a1 (patch)
treecda125577c44f8fd945d6893b6903f23b59200df
parenta55f139d3ccf4b4509720cc02d3f80a41cbf00ac (diff)
libinput: Use floating point instead of fixed point numbers
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 <jadahl@gmail.com>
-rw-r--r--configure.ac2
-rw-r--r--src/libinput-device.c27
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);