filter: pass the DPI to the acceleration filter
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 19 Jun 2015 06:03:42 +0000 (16:03 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 2 Jul 2015 03:03:43 +0000 (13:03 +1000)
Currently unused, but store the ratio of DPI:default DPI for later use.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
src/evdev.c
src/evdev.h
src/filter.c
src/filter.h
src/libinput-util.h
tools/ptraccel-debug.c

index 9602587..62e6b83 100644 (file)
@@ -1410,7 +1410,8 @@ int
 evdev_device_init_pointer_acceleration(struct evdev_device *device,
                                       accel_profile_func_t profile)
 {
-       device->pointer.filter = create_pointer_accelerator_filter(profile);
+       device->pointer.filter = create_pointer_accelerator_filter(profile,
+                                                                  device->dpi);
        if (!device->pointer.filter)
                return -1;
 
index 0485894..4e77344 100644 (file)
@@ -36,9 +36,6 @@
 #include "timer.h"
 #include "filter.h"
 
-/* The HW DPI rate we normalize to before calculating pointer acceleration */
-#define DEFAULT_MOUSE_DPI 1000
-
 /*
  * The constant (linear) acceleration factor we use to normalize trackpoint
  * deltas before calculating pointer acceleration.
index 1e05782..23e3349 100644 (file)
@@ -111,6 +111,8 @@ struct pointer_accelerator {
        double threshold;       /* units/ms */
        double accel;           /* unitless factor */
        double incline;         /* incline of the function */
+
+       double dpi_factor;
 };
 
 static void
@@ -346,7 +348,8 @@ struct motion_filter_interface accelerator_interface = {
 };
 
 struct motion_filter *
-create_pointer_accelerator_filter(accel_profile_func_t profile)
+create_pointer_accelerator_filter(accel_profile_func_t profile,
+                                 int dpi)
 {
        struct pointer_accelerator *filter;
 
@@ -369,6 +372,8 @@ create_pointer_accelerator_filter(accel_profile_func_t profile)
        filter->accel = DEFAULT_ACCELERATION;
        filter->incline = DEFAULT_INCLINE;
 
+       filter->dpi_factor = dpi/(double)DEFAULT_MOUSE_DPI;
+
        return &filter->base;
 }
 
index de94997..64a8b50 100644 (file)
@@ -58,7 +58,8 @@ typedef double (*accel_profile_func_t)(struct motion_filter *filter,
                                       uint64_t time);
 
 struct motion_filter *
-create_pointer_accelerator_filter(accel_profile_func_t filter);
+create_pointer_accelerator_filter(accel_profile_func_t filter,
+                                 int dpi);
 
 /*
  * Pointer acceleration profiles.
index 0c56b76..00c93fe 100644 (file)
@@ -37,6 +37,9 @@
 #define VENDOR_ID_APPLE 0x5ac
 #define VENDOR_ID_WACOM 0x56a
 
+/* The HW DPI rate we normalize to before calculating pointer acceleration */
+#define DEFAULT_MOUSE_DPI 1000
+
 void
 set_logging_enabled(int enabled);
 
index c774e3b..0cfe2b7 100644 (file)
@@ -199,7 +199,8 @@ main(int argc, char **argv)
                OPT_SPEED,
        };
 
-       filter = create_pointer_accelerator_filter(pointer_accel_profile_linear);
+       filter = create_pointer_accelerator_filter(pointer_accel_profile_linear,
+                                                  1000);
        assert(filter != NULL);
 
        while (1) {