[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