On 04/25/2012 11:22 PM, Peter Hutterer wrote:
> On Wed, Apr 25, 2012 at 10:37:26PM -0700, Chase Douglas wrote:
>> On 04/25/2012 08:00 PM, Peter Hutterer wrote:
>>> Provides for a more consistent scrolling experience, otherwise delta
>>> leftovers may trigger extra events even when the actual scrolling action
>>> stays the same.
>>>
>>> Signed-off-by: Peter Hutterer <[email protected]>
>>> ---
>>>  src/synaptics.c |    2 ++
>>>  1 file changed, 2 insertions(+)
>>>
>>> diff --git a/src/synaptics.c b/src/synaptics.c
>>> index 0546ab9..429f5d0 100644
>>> --- a/src/synaptics.c
>>> +++ b/src/synaptics.c
>>> @@ -2414,6 +2414,8 @@ HandleScrolling(SynapticsPrivate *priv, struct 
>>> SynapticsHwState *hw,
>>>             DBG(7, "circular scroll detected on edge\n");
>>>         }
>>>     }
>>> +        priv->scroll.delta_y = 0;
>>> +        priv->scroll.delta_x = 0;
>>>      }
>>>      if (!priv->circ_scroll_on) {
>>>     if (finger) {
>>
>> This path is followed when a finger begins contact, not when a finger is
>> lifted. I'm guessing it is correct, though, because we want to reset the
>> scroll deltas when we start a new motion?
> 
> yeah, sorry. wrong word in the commit msg. FS_UNTOUCHED, the condition this
> is hit at is "no finger is touching". This path is run more often than
> necessary, so it gets reset too often here. But integrating it into the
> state machine requires more changes than I'm comfortable with at this point
> and we need some "reset scrolling state" function anyways. Until that
> exists, this one will do.
> 
> I moved this up a bit (in my local tree) for better readability. Same two
> lines are now  below the call to stop_coasting(). No functional changes
> though.
> 
> diff --git a/src/synaptics.c b/src/synaptics.c
> index 104a2c7..51ecda5 100644
> --- a/src/synaptics.c
> +++ b/src/synaptics.c
> @@ -2398,6 +2398,8 @@ HandleScrolling(SynapticsPrivate *priv, struct 
> SynapticsHwState *hw,
>      /* scroll detection */
>      if (finger && priv->finger_state == FS_UNTOUCHED) {
>         stop_coasting(priv);
> +        priv->scroll.delta_y = 0;
> +        priv->scroll.delta_x = 0;
>         if (para->circular_scrolling) {
>             if ((para->circular_trigger == 0 && edge) ||
>                 (para->circular_trigger == 1 && edge & TOP_EDGE) ||
> @@ -2414,8 +2416,6 @@ HandleScrolling(SynapticsPrivate *priv, struct 
> SynapticsHwState *hw,
>                 DBG(7, "circular scroll detected on edge\n");
>             }
>         }
> -        priv->scroll.delta_y = 0;
> -        priv->scroll.delta_x = 0;
>      }
>      if (!priv->circ_scroll_on) {
>         if (finger) {

Ok. With a suitably fixed commit message:

Reviewed-by: Chase Douglas <[email protected]>
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to