On Tue, Aug 5, 2014 at 9:55 PM, Peter Hutterer <peter.hutte...@who-t.net> wrote:
> 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?
>

@param line removed.

> Acked-by: Peter Hutterer <peter.hutte...@who-t.net>
> otherwise for the series. see the comment in 3/4 though.
>
> Cheers,
>    Peter
>
Thanks. Give me a quick ACK on the modifications in 3/4 and I'll push them up :)

>
>> + */
>> +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
>>

------------------------------------------------------------------------------
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to