filter: cap trackpoint scale factor at 1.0
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 4 Jun 2018 03:36:08 +0000 (13:36 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 5 Jun 2018 00:45:07 +0000 (10:45 +1000)
Otherwise we scale up lower-resolution trackpoints' movements, resulting in a
jumpy cursor.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/filter-trackpoint.c

index 9d32fcb..760f0e6 100644 (file)
@@ -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;