On Mon, Jun 02, 2014 at 11:42:10PM +0200, Jonas Ådahl wrote: > Fixed point numbers can easily overflow, and double to fixed point > conversion is lossy. Use floating point (double) where fixed point > numbers where previously used and remove the li_fixed_t type. > > Signed-off-by: Jonas Ådahl <jad...@gmail.com> > --- > > It has been brought up a couple of times that it might not be the best > idea to use fixed point numbers in the libinput API due to various > reasons. This patch changes the API to always use double where it fixed > point were previously used. > > Will reply to this E-mail with patches to weston, clutter and > xf86-input-libinput for consideration. > > Jonas > > src/evdev-mt-touchpad.c | 12 +++------ > src/evdev.c | 51 +++++++++++++++++-------------------- > src/evdev.h | 10 ++++---- > src/libinput-private.h | 18 ++++++------- > src/libinput-util.h | 23 ----------------- > src/libinput.c | 50 ++++++++++++++++++------------------ > src/libinput.h | 68 > ++++++++----------------------------------------- > test/pointer.c | 7 +++-- > test/touch.c | 6 ++--- > tools/event-debug.c | 28 ++++++++------------ > 10 files changed, 94 insertions(+), 179 deletions(-) > > diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c > index 26d5f7d..4973a5f 100644 > --- a/src/evdev-mt-touchpad.c > +++ b/src/evdev-mt-touchpad.c > @@ -488,7 +488,7 @@ tp_post_twofinger_scroll(struct tp_dispatch *tp, uint64_t > time) > pointer_notify_axis(&tp->device->base, > time, > LIBINPUT_POINTER_AXIS_VERTICAL_SCROLL, > - li_fixed_from_double(dy)); > + dy); > } > > if (dx != 0.0 && > @@ -496,7 +496,7 @@ tp_post_twofinger_scroll(struct tp_dispatch *tp, uint64_t > time) > pointer_notify_axis(&tp->device->base, > time, > LIBINPUT_POINTER_AXIS_HORIZONTAL_SCROLL, > - li_fixed_from_double(dx)); > + dx); > } > } > > @@ -576,12 +576,8 @@ tp_post_events(struct tp_dispatch *tp, uint64_t time) > tp_get_delta(t, &dx, &dy); > tp_filter_motion(tp, &dx, &dy, time); > > - if (dx != 0 || dy != 0) > - pointer_notify_motion( > - &tp->device->base, > - time, > - li_fixed_from_double(dx), > - li_fixed_from_double(dy)); > + if (dx != 0.0 || dy != 0.0) > + pointer_notify_motion(&tp->device->base, time, dx, dy); > } > } > > diff --git a/src/evdev.c b/src/evdev.c > index d32ece3..d23c09f 100644 > --- a/src/evdev.c > +++ b/src/evdev.c > @@ -39,7 +39,7 @@ > #include "filter.h" > #include "libinput-private.h" > > -#define DEFAULT_AXIS_STEP_DISTANCE li_fixed_from_int(10) > +#define DEFAULT_AXIS_STEP_DISTANCE 10 > > #ifndef KEY_MICMUTE > #define KEY_MICMUTE 0xf8 > @@ -97,22 +97,22 @@ transform_absolute(struct evdev_device *device, int32_t > *x, int32_t *y) > } > } > > -li_fixed_t > +double > evdev_device_transform_x(struct evdev_device *device, > - li_fixed_t x, > + double x, > uint32_t width) > { > - return ((uint64_t)x - li_fixed_from_int(device->abs.min_x)) * width / > - (device->abs.max_x - device->abs.min_x + 1); > + return (x - (double) device->abs.min_x) * (double) width / > + (double) (device->abs.max_x - device->abs.min_x + 1);
one cast to double is enough, you don't need to cast all of them. In this case, because x is already double we shouldn't need any cast. > } > > -li_fixed_t > +double > evdev_device_transform_y(struct evdev_device *device, > - li_fixed_t y, > + double y, > uint32_t height) > { > - return ((uint64_t)y - li_fixed_from_int(device->abs.min_y)) * height / > - (device->abs.max_y - device->abs.min_y + 1); > + return (y - (double) device->abs.min_y) * (double) height / > + (double) (device->abs.max_y - device->abs.min_y + 1); > } same here > static void > @@ -120,8 +120,7 @@ evdev_flush_pending_event(struct evdev_device *device, > uint64_t time) > { > struct motion_params motion; > int32_t cx, cy; > - li_fixed_t x, y; > - li_fixed_t dx, dy; > + double x, y; > int slot; > int seat_slot; > struct libinput_device *base = &device->base; > @@ -133,20 +132,18 @@ evdev_flush_pending_event(struct evdev_device *device, > uint64_t time) > case EVDEV_NONE: > return; > case EVDEV_RELATIVE_MOTION: > - motion.dx = li_fixed_to_double(device->rel.dx); > - motion.dy = li_fixed_to_double(device->rel.dy); > + motion.dx = (double) device->rel.dx; > + motion.dy = (double) device->rel.dy; the cast here is superfluous. Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> otherwise Cheers, Peter > device->rel.dx = 0; > device->rel.dy = 0; > > /* Apply pointer acceleration. */ > filter_dispatch(device->pointer.filter, &motion, device, time); > > - dx = li_fixed_from_double(motion.dx); > - dy = li_fixed_from_double(motion.dy); > - if (dx == 0 && dy == 0) > + if (motion.dx == 0.0 && motion.dy == 0.0) > break; > > - pointer_notify_motion(base, time, dx, dy); > + pointer_notify_motion(base, time, motion.dx, motion.dy); > break; > case EVDEV_ABSOLUTE_MT_DOWN: > if (!(device->seat_caps & EVDEV_DEVICE_TOUCH)) > @@ -165,8 +162,8 @@ evdev_flush_pending_event(struct evdev_device *device, > uint64_t time) > break; > > seat->slot_map |= 1 << seat_slot; > - x = li_fixed_from_int(device->mt.slots[slot].x); > - y = li_fixed_from_int(device->mt.slots[slot].y); > + x = device->mt.slots[slot].x; > + y = device->mt.slots[slot].y; > > touch_notify_touch_down(base, time, slot, seat_slot, x, y); > break; > @@ -175,8 +172,8 @@ evdev_flush_pending_event(struct evdev_device *device, > uint64_t time) > break; > > seat_slot = device->mt.slots[slot].seat_slot; > - x = li_fixed_from_int(device->mt.slots[slot].x); > - y = li_fixed_from_int(device->mt.slots[slot].y); > + x = device->mt.slots[slot].x; > + y = device->mt.slots[slot].y; > > if (seat_slot == -1) > break; > @@ -216,15 +213,13 @@ evdev_flush_pending_event(struct evdev_device *device, > uint64_t time) > seat->slot_map |= 1 << seat_slot; > > transform_absolute(device, &cx, &cy); > - x = li_fixed_from_int(cx); > - y = li_fixed_from_int(cy); > > - touch_notify_touch_down(base, time, -1, seat_slot, x, y); > + touch_notify_touch_down(base, time, -1, seat_slot, cx, cy); > break; > case EVDEV_ABSOLUTE_MOTION: > transform_absolute(device, &cx, &cy); > - x = li_fixed_from_int(cx); > - y = li_fixed_from_int(cy); > + x = cx; > + y = cy; > > if (device->seat_caps & EVDEV_DEVICE_TOUCH) { > seat_slot = device->abs.seat_slot; > @@ -382,13 +377,13 @@ evdev_process_relative(struct evdev_device *device, > case REL_X: > if (device->pending_event != EVDEV_RELATIVE_MOTION) > evdev_flush_pending_event(device, time); > - device->rel.dx += li_fixed_from_int(e->value); > + device->rel.dx += e->value; > device->pending_event = EVDEV_RELATIVE_MOTION; > break; > case REL_Y: > if (device->pending_event != EVDEV_RELATIVE_MOTION) > evdev_flush_pending_event(device, time); > - device->rel.dy += li_fixed_from_int(e->value); > + device->rel.dy += e->value; > device->pending_event = EVDEV_RELATIVE_MOTION; > break; > case REL_WHEEL: > diff --git a/src/evdev.h b/src/evdev.h > index c9717b5..8a41b81 100644 > --- a/src/evdev.h > +++ b/src/evdev.h > @@ -83,7 +83,7 @@ struct evdev_device { > struct mtdev *mtdev; > > struct { > - li_fixed_t dx, dy; > + int dx, dy; > } rel; > > enum evdev_event_type pending_event; > @@ -148,14 +148,14 @@ int > evdev_device_has_capability(struct evdev_device *device, > enum libinput_device_capability capability); > > -li_fixed_t > +double > evdev_device_transform_x(struct evdev_device *device, > - li_fixed_t x, > + double x, > uint32_t width); > > -li_fixed_t > +double > evdev_device_transform_y(struct evdev_device *device, > - li_fixed_t y, > + double y, > uint32_t height); > > void > diff --git a/src/libinput-private.h b/src/libinput-private.h > index 61cdc79..2e4cff8 100644 > --- a/src/libinput-private.h > +++ b/src/libinput-private.h > @@ -140,14 +140,14 @@ keyboard_notify_key(struct libinput_device *device, > void > pointer_notify_motion(struct libinput_device *device, > uint32_t time, > - li_fixed_t dx, > - li_fixed_t dy); > + double dx, > + double dy); > > void > pointer_notify_motion_absolute(struct libinput_device *device, > uint32_t time, > - li_fixed_t x, > - li_fixed_t y); > + double x, > + double y); > > void > pointer_notify_button(struct libinput_device *device, > @@ -159,23 +159,23 @@ void > pointer_notify_axis(struct libinput_device *device, > uint32_t time, > enum libinput_pointer_axis axis, > - li_fixed_t value); > + double value); > > void > touch_notify_touch_down(struct libinput_device *device, > uint32_t time, > int32_t slot, > int32_t seat_slot, > - li_fixed_t x, > - li_fixed_t y); > + double x, > + double y); > > void > touch_notify_touch_motion(struct libinput_device *device, > uint32_t time, > int32_t slot, > int32_t seat_slot, > - li_fixed_t x, > - li_fixed_t y); > + double x, > + double y); > > void > touch_notify_touch_up(struct libinput_device *device, > diff --git a/src/libinput-util.h b/src/libinput-util.h > index c920568..11c4f5c 100644 > --- a/src/libinput-util.h > +++ b/src/libinput-util.h > @@ -76,29 +76,6 @@ int list_empty(const struct list *list); > #define min(a, b) (((a) < (b)) ? (a) : (b)) > #define max(a, b) (((a) > (b)) ? (a) : (b)) > > -/* > - * This fixed point implementation is a verbatim copy from wayland-util.h > from > - * the Wayland project, with the wl_ prefix renamed li_. > - */ > - > -static inline li_fixed_t li_fixed_from_int(int i) > -{ > - return i * 256; > -} > - > -static inline li_fixed_t > -li_fixed_from_double(double d) > -{ > - union { > - double d; > - int64_t i; > - } u; > - > - u.d = d + (3LL << (51 - 8)); > - > - return u.i; > -} > - > #define LIBINPUT_EXPORT __attribute__ ((visibility("default"))) > > static inline void * > diff --git a/src/libinput.c b/src/libinput.c > index 6b7e8b8..048200c 100644 > --- a/src/libinput.c > +++ b/src/libinput.c > @@ -61,13 +61,13 @@ struct libinput_event_keyboard { > struct libinput_event_pointer { > struct libinput_event base; > uint32_t time; > - li_fixed_t x; > - li_fixed_t y; > + double x; > + double y; > uint32_t button; > uint32_t seat_button_count; > enum libinput_pointer_button_state state; > enum libinput_pointer_axis axis; > - li_fixed_t value; > + double value; > }; > > struct libinput_event_touch { > @@ -75,8 +75,8 @@ struct libinput_event_touch { > uint32_t time; > int32_t slot; > int32_t seat_slot; > - li_fixed_t x; > - li_fixed_t y; > + double x; > + double y; > }; > > static void > @@ -296,31 +296,31 @@ libinput_event_pointer_get_time(struct > libinput_event_pointer *event) > return event->time; > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_pointer_get_dx(struct libinput_event_pointer *event) > { > return event->x; > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_pointer_get_dy(struct libinput_event_pointer *event) > { > return event->y; > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_pointer_get_absolute_x(struct libinput_event_pointer *event) > { > return event->x; > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_pointer_get_absolute_y(struct libinput_event_pointer *event) > { > return event->y; > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_pointer_get_absolute_x_transformed( > struct libinput_event_pointer *event, > uint32_t width) > @@ -331,7 +331,7 @@ libinput_event_pointer_get_absolute_x_transformed( > return evdev_device_transform_x(device, event->x, width); > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_pointer_get_absolute_y_transformed( > struct libinput_event_pointer *event, > uint32_t height) > @@ -367,7 +367,7 @@ libinput_event_pointer_get_axis(struct > libinput_event_pointer *event) > return event->axis; > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_pointer_get_axis_value(struct libinput_event_pointer *event) > { > return event->value; > @@ -391,13 +391,13 @@ libinput_event_touch_get_seat_slot(struct > libinput_event_touch *event) > return event->seat_slot; > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_touch_get_x(struct libinput_event_touch *event) > { > return event->x; > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_touch_get_x_transformed(struct libinput_event_touch *event, > uint32_t width) > { > @@ -407,7 +407,7 @@ libinput_event_touch_get_x_transformed(struct > libinput_event_touch *event, > return evdev_device_transform_x(device, event->x, width); > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_touch_get_y_transformed(struct libinput_event_touch *event, > uint32_t height) > { > @@ -417,7 +417,7 @@ libinput_event_touch_get_y_transformed(struct > libinput_event_touch *event, > return evdev_device_transform_y(device, event->y, height); > } > > -LIBINPUT_EXPORT li_fixed_t > +LIBINPUT_EXPORT double > libinput_event_touch_get_y(struct libinput_event_touch *event) > { > return event->y; > @@ -816,8 +816,8 @@ keyboard_notify_key(struct libinput_device *device, > void > pointer_notify_motion(struct libinput_device *device, > uint32_t time, > - li_fixed_t dx, > - li_fixed_t dy) > + double dx, > + double dy) > { > struct libinput_event_pointer *motion_event; > > @@ -839,8 +839,8 @@ pointer_notify_motion(struct libinput_device *device, > void > pointer_notify_motion_absolute(struct libinput_device *device, > uint32_t time, > - li_fixed_t x, > - li_fixed_t y) > + double x, > + double y) > { > struct libinput_event_pointer *motion_absolute_event; > > @@ -892,7 +892,7 @@ void > pointer_notify_axis(struct libinput_device *device, > uint32_t time, > enum libinput_pointer_axis axis, > - li_fixed_t value) > + double value) > { > struct libinput_event_pointer *axis_event; > > @@ -916,8 +916,8 @@ touch_notify_touch_down(struct libinput_device *device, > uint32_t time, > int32_t slot, > int32_t seat_slot, > - li_fixed_t x, > - li_fixed_t y) > + double x, > + double y) > { > struct libinput_event_touch *touch_event; > > @@ -943,8 +943,8 @@ touch_notify_touch_motion(struct libinput_device *device, > uint32_t time, > int32_t slot, > int32_t seat_slot, > - li_fixed_t x, > - li_fixed_t y) > + double x, > + double y) > { > struct libinput_event_touch *touch_event; > > diff --git a/src/libinput.h b/src/libinput.h > index d771e21..d88140f 100644 > --- a/src/libinput.h > +++ b/src/libinput.h > @@ -79,13 +79,6 @@ extern "C" { > */ > > /** > - * @ingroup fixed_point > - * > - * libinput 24.8 fixed point real number. > - */ > -typedef int32_t li_fixed_t; > - > -/** > * Log priority for internal logging messages. > */ > enum libinput_log_priority { > @@ -220,45 +213,6 @@ struct libinput_event_pointer; > struct libinput_event_touch; > > /** > - * @defgroup fixed_point Fixed point utilities > - */ > - > -/** > - * @ingroup fixed_point > - * > - * Convert li_fixed_t to a double > - * > - * @param f fixed point number > - * @return Converted double > - */ > -static inline double > -li_fixed_to_double (li_fixed_t f) > -{ > - union { > - double d; > - int64_t i; > - } u; > - > - u.i = ((1023LL + 44LL) << 52) + (1LL << 51) + f; > - > - return u.d - (3LL << 43); > -} > - > -/** > - * @ingroup fixed_point > - * > - * Convert li_fixed_t to a int. The fraction part is discarded. > - * > - * @param f fixed point number > - * @return Converted int > - */ > -static inline int > -li_fixed_to_int(li_fixed_t f) > -{ > - return f / 256; > -} > - > -/** > * @defgroup event Acessing and destruction of events > */ > > @@ -453,7 +407,7 @@ libinput_event_pointer_get_time(struct > libinput_event_pointer *event); > * > * @return the relative x movement since the last event > */ > -li_fixed_t > +double > libinput_event_pointer_get_dx(struct libinput_event_pointer *event); > > /** > @@ -468,7 +422,7 @@ libinput_event_pointer_get_dx(struct > libinput_event_pointer *event); > * > * @return the relative y movement since the last event > */ > -li_fixed_t > +double > libinput_event_pointer_get_dy(struct libinput_event_pointer *event); > > /** > @@ -488,7 +442,7 @@ libinput_event_pointer_get_dy(struct > libinput_event_pointer *event); > * > * @return the current absolute x coordinate > */ > -li_fixed_t > +double > libinput_event_pointer_get_absolute_x(struct libinput_event_pointer *event); > > /** > @@ -508,7 +462,7 @@ libinput_event_pointer_get_absolute_x(struct > libinput_event_pointer *event); > * > * @return the current absolute y coordinate > */ > -li_fixed_t > +double > libinput_event_pointer_get_absolute_y(struct libinput_event_pointer *event); > > /** > @@ -528,7 +482,7 @@ libinput_event_pointer_get_absolute_y(struct > libinput_event_pointer *event); > * @param width The current output screen width > * @return the current absolute x coordinate transformed to a screen > coordinate > */ > -li_fixed_t > +double > libinput_event_pointer_get_absolute_x_transformed( > struct libinput_event_pointer *event, > uint32_t width); > @@ -550,7 +504,7 @@ libinput_event_pointer_get_absolute_x_transformed( > * @param height The current output screen height > * @return the current absolute y coordinate transformed to a screen > coordinate > */ > -li_fixed_t > +double > libinput_event_pointer_get_absolute_y_transformed( > struct libinput_event_pointer *event, > uint32_t height); > @@ -636,7 +590,7 @@ libinput_event_pointer_get_axis(struct > libinput_event_pointer *event); > * > * @return the axis value of this event > */ > -li_fixed_t > +double > libinput_event_pointer_get_axis_value(struct libinput_event_pointer *event); > > /** > @@ -711,7 +665,7 @@ libinput_event_touch_get_seat_slot(struct > libinput_event_touch *event); > * @param event The libinput touch event > * @return the current absolute x coordinate > */ > -li_fixed_t > +double > libinput_event_touch_get_x(struct libinput_event_touch *event); > > /** > @@ -731,7 +685,7 @@ libinput_event_touch_get_x(struct libinput_event_touch > *event); > * @param event The libinput touch event > * @return the current absolute y coordinate > */ > -li_fixed_t > +double > libinput_event_touch_get_y(struct libinput_event_touch *event); > > /** > @@ -747,7 +701,7 @@ libinput_event_touch_get_y(struct libinput_event_touch > *event); > * @param width The current output screen width > * @return the current absolute x coordinate transformed to a screen > coordinate > */ > -li_fixed_t > +double > libinput_event_touch_get_x_transformed(struct libinput_event_touch *event, > uint32_t width); > > @@ -764,7 +718,7 @@ libinput_event_touch_get_x_transformed(struct > libinput_event_touch *event, > * @param height The current output screen height > * @return the current absolute y coordinate transformed to a screen > coordinate > */ > -li_fixed_t > +double > libinput_event_touch_get_y_transformed(struct libinput_event_touch *event, > uint32_t height); > > diff --git a/test/pointer.c b/test/pointer.c > index f47e094..3a2386c 100644 > --- a/test/pointer.c > +++ b/test/pointer.c > @@ -66,8 +66,8 @@ test_relative_event(struct litest_device *dev, int dx, int > dy) > expected_length = sqrt(dx*dx + dy*dy); > expected_dir = atan2(dx, dy); > > - ev_dx = li_fixed_to_double(libinput_event_pointer_get_dx(ptrev)); > - ev_dy = li_fixed_to_double(libinput_event_pointer_get_dy(ptrev)); > + ev_dx = libinput_event_pointer_get_dx(ptrev); > + ev_dy = libinput_event_pointer_get_dy(ptrev); > actual_length = sqrt(ev_dx*ev_dx + ev_dy*ev_dy); > actual_dir = atan2(ev_dx, ev_dy); > > @@ -183,8 +183,7 @@ test_wheel_event(struct litest_device *dev, int which, > int amount) > which == REL_WHEEL ? > LIBINPUT_POINTER_AXIS_VERTICAL_SCROLL : > LIBINPUT_POINTER_AXIS_HORIZONTAL_SCROLL); > - ck_assert_int_eq(libinput_event_pointer_get_axis_value(ptrev), > - li_fixed_from_int(expected)); > + ck_assert_int_eq(libinput_event_pointer_get_axis_value(ptrev), > expected); > libinput_event_destroy(event); > } > > diff --git a/test/touch.c b/test/touch.c > index 41ecc18..2a7c966 100644 > --- a/test/touch.c > +++ b/test/touch.c > @@ -68,7 +68,7 @@ START_TEST(touch_abs_transform) > struct libinput *libinput; > struct libinput_event *ev; > struct libinput_event_touch *tev; > - li_fixed_t fx, fy; > + double fx, fy; > bool tested = false; > > struct input_absinfo abs[] = { > @@ -97,9 +97,9 @@ START_TEST(touch_abs_transform) > > tev = libinput_event_get_touch_event(ev); > fx = libinput_event_touch_get_x_transformed(tev, 1920); > - ck_assert_int_eq(li_fixed_to_int(fx), 1919); > + ck_assert_int_eq(fx, 1919.0); > fy = libinput_event_touch_get_y_transformed(tev, 720); > - ck_assert_int_eq(li_fixed_to_int(fy), 719); > + ck_assert_int_eq(fy, 719.0); > > tested = true; > > diff --git a/tools/event-debug.c b/tools/event-debug.c > index de6b875..dee7ae6 100644 > --- a/tools/event-debug.c > +++ b/tools/event-debug.c > @@ -254,29 +254,25 @@ static void > print_motion_event(struct libinput_event *ev) > { > struct libinput_event_pointer *p = libinput_event_get_pointer_event(ev); > - li_fixed_t x = libinput_event_pointer_get_dx(p), > - y = libinput_event_pointer_get_dy(p); > + double x = libinput_event_pointer_get_dx(p); > + double y = libinput_event_pointer_get_dy(p); > > print_event_time(libinput_event_pointer_get_time(p)); > > - printf("%6.2f/%6.2f\n", > - li_fixed_to_double(x), > - li_fixed_to_double(y)); > + printf("%6.2f/%6.2f\n", x, y); > } > > static void > print_absmotion_event(struct libinput_event *ev) > { > struct libinput_event_pointer *p = libinput_event_get_pointer_event(ev); > - li_fixed_t x = libinput_event_pointer_get_absolute_x_transformed( > + double x = libinput_event_pointer_get_absolute_x_transformed( > p, screen_width); > - li_fixed_t y = libinput_event_pointer_get_absolute_y_transformed( > + double y = libinput_event_pointer_get_absolute_y_transformed( > p, screen_height); > > print_event_time(libinput_event_pointer_get_time(p)); > - printf("%6.2f/%6.2f\n", > - li_fixed_to_double(x), > - li_fixed_to_double(y)); > + printf("%6.2f/%6.2f\n", x, y); > } > > static void > @@ -300,7 +296,7 @@ print_axis_event(struct libinput_event *ev) > struct libinput_event_pointer *p = libinput_event_get_pointer_event(ev); > enum libinput_pointer_axis axis = libinput_event_pointer_get_axis(p); > const char *ax; > - li_fixed_t val; > + double val; > > switch (axis) { > case LIBINPUT_POINTER_AXIS_VERTICAL_SCROLL: > @@ -315,8 +311,7 @@ print_axis_event(struct libinput_event *ev) > > print_event_time(libinput_event_pointer_get_time(p)); > val = libinput_event_pointer_get_axis_value(p); > - printf("%s %.2f\n", > - ax, li_fixed_to_double(val)); > + printf("%s %.2f\n", ax, val); > } > > static void > @@ -332,16 +327,15 @@ static void > print_touch_event_with_coords(struct libinput_event *ev) > { > struct libinput_event_touch *t = libinput_event_get_touch_event(ev); > - li_fixed_t x = libinput_event_touch_get_x_transformed(t, screen_width), > - y = libinput_event_touch_get_y_transformed(t, screen_height); > + double x = libinput_event_touch_get_x_transformed(t, screen_width); > + double y = libinput_event_touch_get_y_transformed(t, screen_height); > > print_event_time(libinput_event_touch_get_time(t)); > > printf("%d (%d) %5.2f/%5.2f\n", > libinput_event_touch_get_slot(t), > libinput_event_touch_get_seat_slot(t), > - li_fixed_to_double(x), > - li_fixed_to_double(y)); > + x, y); > } > > static int > -- > 1.9.1 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel