[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

AltStyle によって変換されたページ (->オリジナル) /