On Tue, Oct 23, 2012 at 11:00 AM, Jason Gerecke <killert...@gmail.com> wrote:
> Direct-touch devices (e.g. tablet PC, 24HD touch) are currently left in
> GESTURE_NONE_MODE while performing drags. This can lead to potential
> "stuck button" issues, since as soon as a second finger comes in
> contact, the driver will switch to GESTURE_LAG_MODE. This prevents the
> wcmSingleFingerPress function from being called, leaving button 1 in a
> pressed state. While any subsuquent gesture will release button 1, if
> the pen is brought into proximity before one occurs, the fingers will be
> sent out of proximity without a chance to release button 1. This causes
> the button to remain "stuck" in the pressed state until the next touch
> occurs.
>
> There are a few different ways this issue could be addressed. In the
> interest of symmetry with indirect-touch devices, this patch has
> direct-touch devices enter and exit GESTURE_DRAG_MODE as well. This
> delays the mode swith to GESTURE_LAG_MODE by one event, allowing
> wcmSingleFingerPress to be called to release button 1.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=56308
>
> Signed-off-by: Jason Gerecke <killert...@gmail.com>

Reviewed-by: Ping Cheng <pingli...@gmail.com>.

Hope it gets in the coming release.

Ping

> ---
>  src/wcmTouchFilter.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/src/wcmTouchFilter.c b/src/wcmTouchFilter.c
> index 49658ea..5e0d349 100644
> --- a/src/wcmTouchFilter.c
> +++ b/src/wcmTouchFilter.c
> @@ -357,10 +357,14 @@ static void wcmSingleFingerPress(WacomDevicePtr priv)
>         if (!TabletHasFeature(priv->common, WCM_LCD))
>                 return;
>
> -       if (firstInProx && !secondInProx)
> +       if (firstInProx && !secondInProx) {
>                 firstChannel->valid.states[0].buttons |= 1;
> -       if (!firstInProx && !secondInProx)
> +               common->wcmGestureMode = GESTURE_DRAG_MODE;
> +       }
> +       else {
>                 firstChannel->valid.states[0].buttons &= ~1;
> +               common->wcmGestureMode = GESTURE_NONE_MODE;
> +       }
>  }
>
>  /* parsing gesture mode according to 2FGT data */
> @@ -527,7 +531,8 @@ ret:
>         }
>  #endif
>
> -       if (common->wcmGestureMode == GESTURE_NONE_MODE && touch_id == 0)
> +       if ((common->wcmGestureMode == GESTURE_NONE_MODE || 
> common->wcmGestureMode == GESTURE_DRAG_MODE) &&
> +           touch_id == 0)
>         {
>                 wcmSingleFingerTap(priv);
>                 wcmSingleFingerPress(priv);
> --
> 1.7.12.2
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_sfd2d_oct
> _______________________________________________
> Linuxwacom-devel mailing list
> Linuxwacom-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to