[PATCH libinput] filter: require minimum acceleration factor of 0.3

Hans de Goede hdegoede at redhat.com
Mon Jun 8 23:54:51 PDT 2015


Hi,

On 09-06-15 00:06, Peter Hutterer wrote:
> For really slow motions, the previous acceleration factor would go down to
> effectively zero. So the slower the mouse motion was, the more it would be
> slowed down which made the mouse at low speeds almost unusable.
>
> Cap the minimum acceleration at 0.3 which provides a predictable slow motion
> for the cursor when high precision is required.
>
> New/old acceleration functions comparison:
>
>    ^
>    |               /
>    |              /
> ty|    _________/
>    |   / /
>    |  / /
>    | / /
>    |/ /    <----- new minimum accel factor
>    | /
>    |/___________________>
>        tx
>
> i.e. the general shape is maintained, but it doesn't go to zero anymore. The
> functions aren't parallel, the new shape is slightly flatter than the previous
> one and they meet at the point where the functions flatten for the threshold
> (tx/ty). ascii art has its limits...
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1227039
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

Looks good to me: Reviewed-by: Hans de Goede <hdegoede at redhat.com>

Regards,

Hans

> ---
>   src/filter.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/filter.c b/src/filter.c
> index c54d866..ed5a184 100644
> --- a/src/filter.c
> +++ b/src/filter.c
> @@ -354,7 +354,7 @@ pointer_accel_profile_linear(struct motion_filter *filter,
>   	const double threshold = accel_filter->threshold; /* units/ms */
>   	const double incline = accel_filter->incline;
>
> -	s1 = min(1, speed_in * 5);
> +	s1 = min(1, 0.3 + speed_in * 4);
>   	s2 = 1 + (speed_in - threshold) * incline;
>
>   	return min(max_accel, s2 > 1 ? s2 : s1);
>


More information about the wayland-devel mailing list