[PATCH xf86-input-synaptics 1/4] Fix clickfinger actions when middle button emulation is enabled
Peter Hutterer
peter.hutterer at who-t.net
Wed Mar 21 21:35:50 PDT 2012
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 <chase.douglas at canonical.com>
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
>
More information about the xorg-devel
mailing list