From 77f9a47996761a4106eb317e5c8d4560d813ba34 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 6 Aug 2018 15:24:04 +1000 Subject: [PATCH] filter: always init a delta smoothener for 10/10ms on trackpoints If the trackpoint gives us deltas with less than 10ms intervals, something is wrong. Could be bad hardware, a glitch in the matrix or a discontinuity in the otherwise appropriately named time-space continuum. Usually it's the first. Let's always set up trackpoint delta smoothening for 10ms to improve the pointer speed calculation and avoid jerky behaviors. i.e. if a trackpoint delta comes in below 10ms, pretend it came in with a 10ms interval for calculating the speed. Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/104 Signed-off-by: Peter Hutterer --- src/filter-trackpoint.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/filter-trackpoint.c b/src/filter-trackpoint.c index 1b92626..a401a71 100644 --- a/src/filter-trackpoint.c +++ b/src/filter-trackpoint.c @@ -185,6 +185,7 @@ struct motion_filter * create_pointer_accelerator_filter_trackpoint(double multiplier) { struct trackpoint_accelerator *filter; + struct pointer_delta_smoothener *smoothener; assert(multiplier > 0.0); @@ -210,5 +211,10 @@ create_pointer_accelerator_filter_trackpoint(double multiplier) filter->base.interface = &accelerator_interface_trackpoint; + smoothener = zalloc(sizeof(*smoothener)); + smoothener->threshold = ms2us(10); + smoothener->value = ms2us(10); + filter->trackers.smoothener = smoothener; + return &filter->base; } -- 2.7.4