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