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
