Hi,

On 22-11-16 02:34, Peter Hutterer wrote:
Taking the last 4 points means factoring in a coordinate that may be more than
40ms in the past - or even more when the finger moves slowly and we don't get
events for a while. This makes the pointer more sluggish and slower to catch up
with what the finger is actually doing.

We already have the motion hysteresis as a separate item to prevent jumps (and
thus adds some delay to the movement), the calculation over time doesn't
provide enough benefit to justify the sluggish pointer.

Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
---
I'm leaving the motion history as-is for now even though it's largely unused
now. This can be fixed up later once we know this patch has the desired
effect (it does here, but that could be confirmation bias)

Patch looks good to me and is:

Reviewed-by: Hans de Goede <hdego...@redhat.com>

Regards,

Hans


 src/evdev-mt-touchpad.c | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)

diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index d72cb19..7b8514c 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -262,29 +262,19 @@ tp_end_sequence(struct tp_dispatch *tp, struct tp_touch 
*t, uint64_t time)
        tp_end_touch(tp, t, time);
 }

-static double
-tp_estimate_delta(int x0, int x1, int x2, int x3)
-{
-       return (x0 + x1 - x2 - x3) / 4.0;
-}
-
 struct normalized_coords
 tp_get_delta(struct tp_touch *t)
 {
        struct device_float_coords delta;
        const struct normalized_coords zero = { 0.0, 0.0 };

-       if (t->history.count < TOUCHPAD_MIN_SAMPLES)
+       if (t->history.count <= 1)
                return zero;

-       delta.x = tp_estimate_delta(tp_motion_history_offset(t, 0)->x,
-                                   tp_motion_history_offset(t, 1)->x,
-                                   tp_motion_history_offset(t, 2)->x,
-                                   tp_motion_history_offset(t, 3)->x);
-       delta.y = tp_estimate_delta(tp_motion_history_offset(t, 0)->y,
-                                   tp_motion_history_offset(t, 1)->y,
-                                   tp_motion_history_offset(t, 2)->y,
-                                   tp_motion_history_offset(t, 3)->y);
+       delta.x = tp_motion_history_offset(t, 0)->x -
+                 tp_motion_history_offset(t, 1)->x;
+       delta.y = tp_motion_history_offset(t, 0)->y -
+                 tp_motion_history_offset(t, 1)->y;

        return tp_normalize_delta(t->tp, delta);
 }

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to