mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-27 02:10:07 +01:00
filter: don't normalize the const filter approach
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>
This commit is contained in:
parent
fc1a28951a
commit
cef91f5b43
2 changed files with 10 additions and 8 deletions
|
|
@ -65,10 +65,11 @@ accelerator_filter_noop_flat(struct motion_filter *filter,
|
|||
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
|
||||
|
|
|
|||
|
|
@ -150,10 +150,11 @@ accelerator_filter_noop(struct motion_filter *filter,
|
|||
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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue