On Fri, Mar 02, 2012 at 12:42:36PM -0800, Chase Douglas wrote: > Semi-mt devices do not track touches. The locations of touches are > unknown, we only have the bounding box of two of them. We the number of > fingers changes, the bounding box coordinates may change as well, but > the cumulative relative motion updates at that instant are invalid. > > To work around this, ignore changes in cumulative relative motion if the > touch count changes. > > Signed-off-by: Chase Douglas <[email protected]>
Reviewed-by: Peter Hutterer <[email protected]> Cheers, Peter > --- > src/synaptics.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/src/synaptics.c b/src/synaptics.c > index e80dff8..ff3c32e 100644 > --- a/src/synaptics.c > +++ b/src/synaptics.c > @@ -1589,6 +1589,14 @@ ReadInput(InputInfoPtr pInfo) > SynapticsResetTouchHwState(hw); > > while (SynapticsGetHwState(pInfo, priv, hw)) { > + /* Semi-mt device touch slots do not track touches. When there is a > + * change in the number of touches, we must disregard the temporary > + * motion changes. */ > + if (priv->has_semi_mt && hw->numFingers != priv->hwState->numFingers) { > + hw->cumulative_dx = priv->hwState->cumulative_dx; > + hw->cumulative_dy = priv->hwState->cumulative_dy; > + } > + > SynapticsCopyHwState(priv->hwState, hw); > delay = HandleState(pInfo, hw, hw->millis, FALSE); > newDelay = TRUE; > -- > 1.7.9 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
