On Tue, Feb 22, 2011 at 4:29 AM, Andrzej Giniewicz <ggi...@gmail.com> wrote:

> Hi,
>
> > Looks like you have tested this patch yourself. Can you report back here
> > with your testing result and a "Tested-by" tag? I am willing to put
> > "Acked-by" once I see "Tested-by".
>
> well, indeed I tested it.  About tagging, I'm not sure if this is what
> you mean, but here goes a try. If this is done somehow else, would be
> happy to do it differently, never tagged a thing here so I don't know
> the rules yet :)
>

Thank you. You are following the rules ;). In fact, I just needed a second
opinion on the change.

cheers,
> Andrzej.
>
> Tested-by: Andrzej Giniewicz <ggi...@gmail.com>
>

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

Ping


> tested on kernel 2.6.37.1 with input-wacom 0.10.10_2 and
> xf86-input-wacom 0.10.11, tapping with single now works.
>
> > On Mon, Feb 21, 2011 at 12:49 PM, <ch...@cnpbagwell.com> wrote:
> >>
> >> From: Chris Bagwell <ch...@cnpbagwell.com>
> >>
> >> Previous behavior required a double-tap to get a single finger
> >> tap to work and didn't always work for me.  Its behavior was basically
> >> tap-and-drag gesture instead of tap-to-click.
> >>
> >> Converted to standard touchpad behavior of single tap based on finger
> >> release.  This is arguely the more important gesture to users.
> >>
> >> Removed wcmTouchpadMode since it wasn't needed for simple tap-to-click
> >> gesture.  If tap-and-drag gets added back and needs a variable, it can
> >> be added back with a name that has "drag" in it to understand its
> >> intended usage.
> >>
> >> Signed-off-by: Chris Bagwell <ch...@cnpbagwell.com>
> >> ---
> >>  src/wcmCommon.c      |    3 --
> >>  src/wcmTouchFilter.c |   59
> >> +++++++++++++++++++++++++++++--------------------
> >>  src/xf86WacomDefs.h  |    1 -
> >>  3 files changed, 35 insertions(+), 28 deletions(-)
> >>
> >> diff --git a/src/wcmCommon.c b/src/wcmCommon.c
> >> index 926fbc4..e469e15 100644
> >> --- a/src/wcmCommon.c
> >> +++ b/src/wcmCommon.c
> >> @@ -1430,9 +1430,6 @@ void wcmSoftOutEvent(InputInfoPtr pInfo)
> >>        out.device_id = wcmGetPhyDeviceID(priv);
> >>        DBG(2, priv->common, "send a soft prox-out\n");
> >>        wcmSendEvents(pInfo, &out);
> >> -
> >> -       if (out.device_type == TOUCH_ID)
> >> -               priv->common->wcmTouchpadMode = 0;
> >>  }
> >>
> >>
> >>
>  
> /*****************************************************************************
> >> diff --git a/src/wcmTouchFilter.c b/src/wcmTouchFilter.c
> >> index 793d649..093d91f 100644
> >> --- a/src/wcmTouchFilter.c
> >> +++ b/src/wcmTouchFilter.c
> >> @@ -141,32 +141,45 @@ static void wcmFingerTapToClick(WacomDevicePtr
> priv)
> >>  }
> >>
> >>
> >> -/* process single finger Relative mode events
> >> - * if touch is not in an active gesture mode.
> >> +/* A single finger tap is defined as 1 finger tap that lasts less than
> >> + * wcmTapTime.  It results in a left button press.
> >> + *
> >> + * Some work must be done to make sure two fingers were not touching
> >> + * during this gesture. This is easy if first finger is released
> >> + * first.  To handle case of second finger released first, require
> >> + * second finger to have been released before first finger ever
> touched.
> >> + *
> >> + * Function relies on ds[0/1].sample to be updated only when entering
> or
> >> + * exiting proximity so no storage is needed when initial touch occurs.
> >>  */
> >> -static void wcmFirstFingerClick(WacomCommonPtr common)
> >> +static void wcmSingleFingerTap(WacomDevicePtr priv)
> >>  {
> >> -       static int tmpStamp = 0;
> >> -       WacomChannelPtr aChannel = common->wcmChannel;
> >> -       WacomDeviceState ds = aChannel->valid.states[0];
> >> -       WacomDeviceState dsLast = aChannel->valid.states[1];
> >> -       if (ds.proximity)
> >> +       WacomCommonPtr common = priv->common;
> >> +       WacomChannelPtr firstChannel = common->wcmChannel;
> >> +       WacomChannelPtr secondChannel = common->wcmChannel + 1;
> >> +       WacomDeviceState ds[2] = { firstChannel->valid.states[0],
> >> +                                  secondChannel->valid.states[0] };
> >> +       WacomDeviceState dsLast[2] = { firstChannel->valid.states[1],
> >> +                                       secondChannel->valid.states[1]
> };
> >> +
> >> +       DBG(10, priv, "\n");
> >> +
> >> +       if (!ds[0].proximity && dsLast[0].proximity && !ds[1].proximity)
> >>        {
> >> -               if (common->wcmTouchpadMode)
> >> -                       /* continuing left button down */
> >> -                       aChannel->valid.states[0].buttons |= 1;
> >> -               else if (!dsLast.proximity &&
> >> -                   (abs(tmpStamp - ds.sample) <=
> >> common->wcmGestureParameters.wcmTapTime))
> >> +               /* Single Tap must have lasted less than wcmTapTime
> >> +                * and second finger must not have released after
> >> +                * first finger touched.
> >> +                */
> >> +               if (ds[0].sample - dsLast[0].sample <=
> >> +                   common->wcmGestureParameters.wcmTapTime &&
> >> +                   ds[1].sample < dsLast[0].sample)
> >>                {
> >> -                       /* initial left button down */
> >> -                       aChannel->valid.states[0].buttons |= 1;
> >> -                       common->wcmTouchpadMode = 1;
> >> +                       /* left button down */
> >> +                       wcmSendButtonClick(priv, 1, 1);
> >> +
> >> +                       /* left button up */
> >> +                       wcmSendButtonClick(priv, 1, 0);
> >>                }
> >> -       } else {
> >> -               tmpStamp = GetTimeInMillis();
> >> -               if (common->wcmTouchpadMode)
> >> -                       aChannel->valid.states[0].buttons &= ~1;
> >> -               common->wcmTouchpadMode = 0;
> >>        }
> >>  }
> >>
> >> @@ -198,7 +211,6 @@ void wcmGestureFilter(WacomDevicePtr priv, int
> >> channel)
> >>         * was in in prox */
> >>        if (ds[1].proximity && !common->wcmGestureMode &&
> >> dsLast[0].proximity)
> >>        {
> >> -               common->wcmTouchpadMode = 0;
> >>                common->wcmGestureMode = GESTURE_LAG_MODE;
> >>        }
> >>
> >> @@ -248,7 +260,6 @@ void wcmGestureFilter(WacomDevicePtr priv, int
> >> channel)
> >>                common->wcmGestureMode = 0;
> >>                common->wcmGestureParameters.wcmScrollDirection = 0;
> >>
> >> -               common->wcmTouchpadMode = 0;
> >>                goto ret;
> >>        }
> >>
> >> @@ -288,7 +299,7 @@ void wcmGestureFilter(WacomDevicePtr priv, int
> >> channel)
> >>        }
> >>  ret:
> >>        if (!common->wcmGestureMode && !channel &&
> >> !is_absolute(priv->pInfo))
> >> -               wcmFirstFingerClick(common);
> >> +               wcmSingleFingerTap(priv);
> >>  }
> >>
> >>  static void wcmSendScrollEvent(WacomDevicePtr priv, int dist,
> >> diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h
> >> index 91adf72..d72a493 100644
> >> --- a/src/xf86WacomDefs.h
> >> +++ b/src/xf86WacomDefs.h
> >> @@ -460,7 +460,6 @@ struct _WacomCommonRec
> >>        int wcmGesture;              /* disable/enable touch gesture */
> >>        int wcmGestureDefault;       /* default touch gesture to disable
> >> when not supported */
> >>        int wcmGestureMode;            /* data is in Gesture Mode? */
> >> -       int wcmTouchpadMode;           /* in touchpad mode? */
> >>        WacomDeviceState wcmGestureState[MAX_FINGERS]; /* inital state
> when
> >> in gesture mode */
> >>        int wcmCapacity;             /* disable/enable capacity */
> >>        int wcmCapacityDefault;      /* default to -1 when capacity isn't
> >> supported/disabled */
> >> --
> >> 1.7.3.4
> >>
> >>
> >>
> >>
> ------------------------------------------------------------------------------
> >> The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio
> XE:
> >> Pinpoint memory and threading errors before they happen.
> >> Find and fix more than 250 security defects in the development cycle.
> >> Locate bottlenecks in serial and parallel code that limit performance.
> >> http://p.sf.net/sfu/intel-dev2devfeb
> >> _______________________________________________
> >> Linuxwacom-devel mailing list
> >> Linuxwacom-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
> >
> >
>
------------------------------------------------------------------------------
Index, Search & Analyze Logs and other IT data in Real-Time with Splunk 
Collect, index and harness all the fast moving IT data generated by your 
applications, servers and devices whether physical, virtual or in the cloud.
Deliver compliance at lower cost and gain new business insights. 
Free Software Download: http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to