The filter vs const filter is supposed to be for accelerated vs
non-accelerated motion (e.g. pointer motion vs scrolling) - in both
cases the returned value is supposed to be in the same coordinate
system, just once with an extra accel factor applied.
This was broken in the flat and low-dpi profiles: in both of those the
accelerated filter does *not* normalize, it merely applies the fixed/adaptive factor.
The constant filter normalized however. The result was that on e.g. a
5000dpi mouse the constant motion was 5 times slower than the
accelerated motion, even with a factor of 1.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
const struct device_float_coords *unaccelerated,
void *data, uint64_t time)
{
- struct pointer_accelerator_flat *accel =
- (struct pointer_accelerator_flat *) filter;
-
- return normalize_for_dpi(unaccelerated, accel->dpi);
+ const struct normalized_coords normalized = {
+ .x = unaccelerated->x,
+ .y = unaccelerated->y,
+ };
+ return normalized;
}
static bool
const struct device_float_coords *unaccelerated,
void *data, uint64_t time)
{
- struct pointer_accelerator_low_dpi *accel =
- (struct pointer_accelerator_low_dpi *) filter;
-
- return normalize_for_dpi(unaccelerated, accel->dpi);
+ const struct normalized_coords normalized = {
+ .x = unaccelerated->x,
+ .y = unaccelerated->y,
+ };
+ return normalized;
}
static void