On Wed, Mar 21, 2012 at 12:58:27PM -0700, Chase Douglas wrote: > When MBE is enabled, a physical left button press is delayed until a > timeout is reached. This results in the logical left button being > depressed while the physical left button is pressed. The physical state > is stored as the "old" hw state, and it is used for detecting a > transition from depressed to pressed for clickfinger actions. Since the > "old" hw state shows the left button pressed, but the current logical > state shows the left button unpressed, when the MBE timeout fires and we > set the logical left button pressed the transition check fails. > > Since the "old" hw state is only used for clickfinger left button press > transitions, redefining it to hold the previous logical hw state is > sufficient for fixing the bug and should not cause any regressions. > > Signed-off-by: Chase Douglas <[email protected]>
series: 5cde789..b3348eb master -> master thanks. Cheers, Peter > --- > src/synaptics.c | 5 ++++- > src/synapticsstr.h | 2 +- > 2 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/synaptics.c b/src/synaptics.c > index 489eeaa..9f214e5 100644 > --- a/src/synaptics.c > +++ b/src/synaptics.c > @@ -1611,7 +1611,6 @@ ReadInput(InputInfoPtr pInfo) > > SynapticsCopyHwState(priv->hwState, hw); > delay = HandleState(pInfo, hw, hw->millis, FALSE); > - SynapticsCopyHwState(priv->old_hw_state, priv->hwState); > newDelay = TRUE; > } > > @@ -3236,6 +3235,10 @@ HandleState(InputInfoPtr pInfo, struct > SynapticsHwState *hw, CARD32 now, > /* generate a history of the absolute positions */ > if (inside_active_area) > store_history(priv, hw->x, hw->y, hw->millis); > + > + /* Save logical state for transition comparisons */ > + SynapticsCopyHwState(priv->old_hw_state, hw); > + > return delay; > } > > diff --git a/src/synapticsstr.h b/src/synapticsstr.h > index fcefc46..55aab3d 100644 > --- a/src/synapticsstr.h > +++ b/src/synapticsstr.h > @@ -196,7 +196,7 @@ struct _SynapticsPrivateRec > void *proto_data; /* protocol-specific data */ > > struct SynapticsHwState *hwState; > - struct SynapticsHwState *old_hw_state; /* previous hw state */ > + struct SynapticsHwState *old_hw_state; /* previous logical hw state */ > > const char *device; /* device node */ > Bool shm_config; /* True when shared memory area > allocated */ > -- > 1.7.9.1 > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
