[PATCH libinput v2] tablet: fix get_x_transformed() and get_y_transformed()
Peter Hutterer
peter.hutterer at who-t.net
Mon Jul 21 18:08:27 PDT 2014
On Sun, Jul 20, 2014 at 10:20:41PM -0400, Stephen Chandler Paul wrote:
> Because the values for each axis were stored in struct tablet_dispatch in
> millimeters, coordinates were not being translated properly to screen
> coordinates. This stores the values internally as raw coordinates, and only
> translates them to millimeters if the client asks for it.
>
> Changes since last patch:
> - Basically just scrapped the other one and rewrote it. We don't keep track of
> both the raw x and y plus the millimeter x and y anymore.
>
> Signed-off-by: Stephen Chandler Paul <thatslyude at gmail.com>
pushed with a whitespace fix, thanks
Cheers,
Peter
> ---
> src/evdev-tablet.c | 5 ++---
> src/libinput.c | 20 ++++++++++++++++++--
> 2 files changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c
> index d1ad4bb..ca3cc05 100644
> --- a/src/evdev-tablet.c
> +++ b/src/evdev-tablet.c
> @@ -142,9 +142,8 @@ tablet_check_notify_axes(struct tablet_dispatch *tablet,
> switch (a) {
> case LIBINPUT_TABLET_AXIS_X:
> case LIBINPUT_TABLET_AXIS_Y:
> - tablet->axes[a] = evdev_convert_to_mm(absinfo,
> - absinfo->value);
> - break;
> + tablet->axes[a] = absinfo->value;
> + break;
> case LIBINPUT_TABLET_AXIS_DISTANCE:
> case LIBINPUT_TABLET_AXIS_PRESSURE:
> tablet->axes[a] = normalize_pressure_or_dist(absinfo);
> diff --git a/src/libinput.c b/src/libinput.c
> index e013f49..9aa7cbc 100644
> --- a/src/libinput.c
> +++ b/src/libinput.c
> @@ -504,11 +504,27 @@ LIBINPUT_EXPORT double
> libinput_event_tablet_get_axis_value(struct libinput_event_tablet *event,
> enum libinput_tablet_axis axis)
> {
> + struct evdev_device *device =
> + (struct evdev_device *) event->base.device;
> +
> if (event->base.type != LIBINPUT_EVENT_TABLET_AXIS)
> return 0;
>
> - return (axis >= 0 && axis < LIBINPUT_TABLET_AXIS_CNT) ?
> - event->axes[axis] : 0;
> + switch(axis) {
> + case LIBINPUT_TABLET_AXIS_X:
> + return evdev_convert_to_mm(device->abs.absinfo_x,
> + event->axes[axis]);
> + case LIBINPUT_TABLET_AXIS_Y:
> + return evdev_convert_to_mm(device->abs.absinfo_y,
> + event->axes[axis]);
> + case LIBINPUT_TABLET_AXIS_DISTANCE:
> + case LIBINPUT_TABLET_AXIS_PRESSURE:
> + case LIBINPUT_TABLET_AXIS_TILT_X:
> + case LIBINPUT_TABLET_AXIS_TILT_Y:
> + return event->axes[axis];
> + default:
> + return 0;
> + }
> }
>
> LIBINPUT_EXPORT double
> --
> 1.8.5.5
>
More information about the wayland-devel
mailing list