On Thu, Jul 24, 2014 at 12:04:03PM -0700, Jason Gerecke wrote:
> The new GESTURE_CANCEL_MODE is used to short-circuit the gesture
> recognition logic until all touches have been removed from the device.
> By using the wcmCancelGesture function, any in-progress gesture will
> be canceled and cause the driver to ignore further touch input until a
> new gesture is started.
> 
> This is used by the arbitration logic to ensure that touches which
> accumulate in the valid.state list while a pen is in proximity do not
> suddenly trigger a gesture at the moment the pen leaves prox.
> 
> Signed-off-by: Jason Gerecke <killert...@gmail.com>
> ---
>  src/wcmCommon.c      |  1 +
>  src/wcmTouchFilter.c | 32 ++++++++++++++++++++++++++++++++
>  src/xf86Wacom.h      |  1 +
>  3 files changed, 34 insertions(+)
> 
> diff --git a/src/wcmCommon.c b/src/wcmCommon.c
> index 4e7098a..61c42b5 100644
> --- a/src/wcmCommon.c
> +++ b/src/wcmCommon.c
> @@ -970,6 +970,7 @@ void wcmEvent(WacomCommonPtr common, unsigned int channel,
>       if (check_arbitrated_control(pInfo, &ds)) {
>               if (WACOM_DRIVER.active != NULL && priv != WACOM_DRIVER.active) 
> {
>                       wcmSoftOutEvent(WACOM_DRIVER.active->pInfo);
> +                     wcmCancelGesture(WACOM_DRIVER.active->pInfo);
>               }
>               if (ds.proximity)
>                       WACOM_DRIVER.active = priv;
> diff --git a/src/wcmTouchFilter.c b/src/wcmTouchFilter.c
> index 166d2a0..e4316e8 100644
> --- a/src/wcmTouchFilter.c
> +++ b/src/wcmTouchFilter.c
> @@ -37,6 +37,7 @@
>  #define GESTURE_LAG_MODE              8
>  #define GESTURE_PREDRAG_MODE         16
>  #define GESTURE_DRAG_MODE            32
> +#define GESTURE_CANCEL_MODE          64
>  
>  #define WCM_SCROLL_UP                 5      /* vertical up */
>  #define WCM_SCROLL_DOWN               4      /* vertical down */
> @@ -327,6 +328,26 @@ static void wcmSingleFingerPress(WacomDevicePtr priv)
>       }
>  }
>  
> +
> +/**
> + * Cancel any in-progress gesture, returning to GESTURE_NONE_MODE until new
> + * fingers enter proximity.
> + *
> + * @param priv

copy-paste error?

Acked-by: Peter Hutterer <peter.hutte...@who-t.net>
otherwise for the series. see the comment in 3/4 though.

Cheers,
   Peter


> + */
> +void wcmCancelGesture(InputInfoPtr pInfo)
> +{
> +     WacomDevicePtr priv = pInfo->private;
> +     WacomCommonPtr common = priv->common;
> +
> +     if (!IsTouch(priv))
> +             return;
> +
> +     if (common->wcmGestureMode == GESTURE_DRAG_MODE)
> +             wcmSendButtonClick(priv, 1, 0);
> +     common->wcmGestureMode = GESTURE_CANCEL_MODE;
> +}
> +
>  /* parsing gesture mode according to 2FGT data */
>  void wcmGestureFilter(WacomDevicePtr priv, int touch_id)
>  {
> @@ -355,6 +376,17 @@ void wcmGestureFilter(WacomDevicePtr priv, int touch_id)
>               return;
>       }
>  
> +     /* Do not process gestures while in CANCEL mode. Only reset back to
> +      * NONE mode once all fingers have left the screen.
> +      */
> +     if (common->wcmGestureMode == GESTURE_CANCEL_MODE)
> +     {
> +             if (ds[0].proximity || ds[1].proximity)
> +                     return;
> +             else
> +                     common->wcmGestureMode = GESTURE_NONE_MODE;
> +     }
> +
>       /* When 2 fingers are in proximity, it must always be in one of
>        * the valid 2 fingers modes: LAG, SCROLL, or ZOOM.
>        * LAG mode is used while deciding between SCROLL and ZOOM and
> diff --git a/src/xf86Wacom.h b/src/xf86Wacom.h
> index 514a5c2..63a8623 100644
> --- a/src/xf86Wacom.h
> +++ b/src/xf86Wacom.h
> @@ -146,6 +146,7 @@ extern int wcmDevSwitchMode(ClientPtr client, 
> DeviceIntPtr dev, int mode);
>  extern int wcmTilt2R(int x, int y, double offset);
>  extern void wcmEmitKeycode(DeviceIntPtr keydev, int keycode, int state);
>  extern void wcmSoftOutEvent(InputInfoPtr pInfo);
> +extern void wcmCancelGesture(InputInfoPtr pInfo);
>  
>  extern void wcmRotateTablet(InputInfoPtr pInfo, int value);
>  extern void wcmRotateAndScaleCoordinates(InputInfoPtr pInfo, int* x, int* y);
> -- 
> 2.0.2
> 
> 
> ------------------------------------------------------------------------------
> Want fast and easy access to all the code in your enterprise? Index and
> search up to 200,000 lines of code with a free copy of Black Duck
> Code Sight - the same software that powers the world's largest code
> search on Ohloh, the Black Duck Open Hub! Try it now.
> http://p.sf.net/sfu/bds
> _______________________________________________
> Linuxwacom-devel mailing list
> Linuxwacom-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
> 

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to