mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-01-05 10:10:10 +01:00
filter: use a separate variable for the final accel factor
velocity is in unit/ms, the threshold is in units/ms. Once we divide velocity/threshold, we're not in units/ms anymore but have a unitless factor. Use a separate variable to avoid confusion. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
066092a04f
commit
b908e070e9
1 changed files with 6 additions and 5 deletions
11
src/filter.c
11
src/filter.c
|
|
@ -335,6 +335,7 @@ pointer_accel_profile_smooth_simple(struct motion_filter *filter,
|
|||
double threshold = DEFAULT_THRESHOLD; /* units/ms */
|
||||
double accel = DEFAULT_ACCELERATION; /* unitless factor */
|
||||
double smooth_accel_coefficient; /* unitless factor */
|
||||
double factor; /* unitless factor */
|
||||
|
||||
if (threshold < 1.0)
|
||||
threshold = 1.0;
|
||||
|
|
@ -349,12 +350,12 @@ pointer_accel_profile_smooth_simple(struct motion_filter *filter,
|
|||
if (velocity <= threshold)
|
||||
return 1.0;
|
||||
|
||||
velocity /= threshold;
|
||||
if (velocity >= accel)
|
||||
factor = velocity/threshold;
|
||||
if (factor >= accel)
|
||||
return accel;
|
||||
|
||||
/* Velocity is between 1.0 and accel, scale this to 0.0 - 1.0 */
|
||||
velocity = (velocity - 1.0) / (accel - 1.0);
|
||||
smooth_accel_coefficient = calc_penumbral_gradient(velocity);
|
||||
/* factor is between 1.0 and accel, scale this to 0.0 - 1.0 */
|
||||
factor = (factor - 1.0) / (accel - 1.0);
|
||||
smooth_accel_coefficient = calc_penumbral_gradient(factor);
|
||||
return 1.0 + (smooth_accel_coefficient * (accel - 1.0));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue