From 168aad057d4c4824e117f7f2d098e4ce6a7df43e Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 4 Jun 2018 13:36:08 +1000 Subject: [PATCH] filter: cap trackpoint scale factor at 1.0 Otherwise we scale up lower-resolution trackpoints' movements, resulting in a jumpy cursor. Signed-off-by: Peter Hutterer (cherry picked from commit 483123d4906bdddbdc5c6a9c0b362203d4c03d69) --- src/filter-trackpoint.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/filter-trackpoint.c b/src/filter-trackpoint.c index 9d32fcb3..760f0e6e 100644 --- a/src/filter-trackpoint.c +++ b/src/filter-trackpoint.c @@ -299,10 +299,17 @@ create_pointer_accelerator_filter_trackpoint(int max_hw_delta) return NULL; filter->history_size = ARRAY_LENGTH(filter->history); - filter->scale_factor = 1.0 * TRACKPOINT_DEFAULT_RANGE / max_hw_delta; filter->max_accel = TRACKPOINT_DEFAULT_MAX_ACCEL; filter->max_delta = TRACKPOINT_DEFAULT_MAX_DELTA; + filter->scale_factor = 1.0 * TRACKPOINT_DEFAULT_RANGE / max_hw_delta; + + /* Crop to a maximum 1.0 for the scale factor, otherwise we scale up + * events from low-res trackpoints when really we should just take + * those as-is. + */ + filter->scale_factor = min(1.0, filter->scale_factor); + filter->base.interface = &accelerator_interface_trackpoint; return &filter->base;