mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-27 11:30:06 +01:00
filter: pass the DPI to the acceleration filter
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>
This commit is contained in:
parent
92e415eadd
commit
40dab334ab
6 changed files with 15 additions and 7 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue