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) {


Cheers,
  Peter
_______________________________________________
[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