[PATCH libinput 1/2] touchpad: only send most recent edge delta when triggering threshold

Hans de Goede hdegoede at redhat.com
Mon Jun 22 23:59:35 PDT 2015


Hi,

On 23-06-15 06:00, Peter Hutterer wrote:
> When edge scrolling is triggered by exceeding the motion threshold (5mm) we
> sent the whole delta as the first scroll event, causing a big jump.
>
> Instead, send only the current delta. This effectively introduces a 5mm dead
> zone when edge scrolling, still better than the jump.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=90990
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

Series looks good and is:

Reviewed-by: Hans de Goede <hdegoede at redhat.com>

Regards,

Hans


> ---
>   src/evdev-mt-touchpad-edge-scroll.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/evdev-mt-touchpad-edge-scroll.c b/src/evdev-mt-touchpad-edge-scroll.c
> index 56f1e8a..992a169 100644
> --- a/src/evdev-mt-touchpad-edge-scroll.c
> +++ b/src/evdev-mt-touchpad-edge-scroll.c
> @@ -353,7 +353,7 @@ tp_edge_scroll_post_events(struct tp_dispatch *tp, uint64_t time)
>   	struct tp_touch *t;
>   	enum libinput_pointer_axis axis;
>   	double *delta;
> -	struct normalized_coords normalized;
> +	struct normalized_coords normalized, tmp;
>   	const struct normalized_coords zero = { 0.0, 0.0 };
>   	const struct discrete_coords zero_discrete = { 0.0, 0.0 };
>
> @@ -402,11 +402,14 @@ tp_edge_scroll_post_events(struct tp_dispatch *tp, uint64_t time)
>   					 t->scroll.edge_state);
>   			break;
>   		case EDGE_SCROLL_TOUCH_STATE_EDGE_NEW:
> +			tmp = normalized;
>   			normalized = tp_normalize_delta(tp,
>   					device_delta(t->point,
>   						     t->scroll.initial));
>   			if (fabs(*delta) < DEFAULT_SCROLL_THRESHOLD)
>   				normalized = zero;
> +			else
> +				normalized = tmp;
>   			break;
>   		case EDGE_SCROLL_TOUCH_STATE_EDGE:
>   			break;
>


More information about the wayland-devel mailing list