[PATCH synaptics] Fix scoll increment for non-smooth scrolling (#46617)

Chase Douglas chase.douglas at canonical.com
Fri Mar 16 16:59:25 PDT 2012


On 03/01/2012 05:10 PM, Peter Hutterer wrote:
> Introduced in 2603ad69b997c999404ecc441e0d64ea2cc22018. Previously, the
> delta was incremented by (actual delta/scroll dist), button clicks where
> then sent while (delta-- >= 1).
> 
> After 2603ad69b997c999404ecc441e0d64ea2cc22018, the delta was incremented by
> the delta only, scroll dist was used as increment in the smooth scrolling
> information. On non-smooth-scrolling servers, the driver would now send
> too many events. Restore the old behaviour by dividing by the scroll
> distance before entering the button click loop.
> 
> X.Org Bug 46617 <http://bugs.freedesktop.org/show_bug.cgi?id=46617>
> 
> Tested-by: Peter Zotov <whitequark at whitequark.org>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
>  src/synaptics.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/src/synaptics.c b/src/synaptics.c
> index 139f237..7713784 100644
> --- a/src/synaptics.c
> +++ b/src/synaptics.c
> @@ -2743,6 +2743,12 @@ post_scroll_events(const InputInfoPtr pInfo)
>      if (valuator_mask_num_valuators(priv->scroll_events_mask))
>          xf86PostMotionEventM(pInfo->dev, FALSE, priv->scroll_events_mask);
>  #else
> +    SynapticsParameters *para = &priv->synpara;
> +
> +    /* smooth scrolling uses the dist as increment */
> +    priv->scroll.delta_y /= para->scroll_dist_vert;
> +    priv->scroll.delta_x /= para->scroll_dist_horiz;
> +
>      while (priv->scroll.delta_y <= -1.0)
>      {
>          post_button_click(pInfo, 4);

Sounds reasonable to me.

Reviewed-by: Chase Douglas <chase.douglas at canonical.com>


More information about the xorg-devel mailing list