On Sat, Mar 26, 2011 at 6:26 PM, Chris Bagwell <ch...@cnpbagwell.com> wrote:

> On Thu, Mar 24, 2011 at 5:35 PM, Ping Cheng <pingli...@gmail.com> wrote:
> > Change oldHwProx to oldCursorHwProx to better refect its use.
> >
> > Protocol 5 distance starts from the MaxCursorDist (256) when
> > getting in the prox while protocol 4 distance is 0 when
> > getting in the prox.
> >
> > oldCursorHwProx keeps the hardware in/out prox state so we can
> > we set the MaxCursorDist for the next round of relative cursor
> > movement when tool first comes in prox.
>
> I do appreciate the variable clarification.  It wasn't obvious to me
> in past its scope was so limited.
>
> >
> > Signed-off-by: Ping Cheng <pingli...@gmail.com>
> > ---
> >  src/wcmCommon.c     |   24 ++++++++++--------------
> >  src/wcmConfig.c     |    2 +-
> >  src/wcmUSB.c        |    4 ----
> >  src/xf86Wacom.c     |    6 ------
> >  src/xf86WacomDefs.h |    2 +-
> >  5 files changed, 12 insertions(+), 26 deletions(-)
> >
> > diff --git a/src/wcmCommon.c b/src/wcmCommon.c
> > index 0f858eb..845cf6e 100644
> > --- a/src/wcmCommon.c
> > +++ b/src/wcmCommon.c
> > @@ -31,6 +31,8 @@
> >  #define THRESHOLD_TOLERANCE (FILTER_PRESSURE_RES / 125)
> >  #define DEFAULT_THRESHOLD (FILTER_PRESSURE_RES / 75)
> >
> > +#define MAX_CURSOR_DISTANCE 256
> > +
> >  /* X servers pre 1.9 didn't copy data passed into xf86Post*Event.
> >  * Data passed in would be modified, requiring the driver to copy the
> >  * data beforehand.
> > @@ -1138,14 +1140,6 @@ static void commonDispatchDevice(WacomCommonPtr
> common, unsigned int channel,
> >        /* Device transformations come first */
> >        priv = pInfo->private;
> >
> > -       if (IsUSBDevice(common))
> > -       {
> > -               if (IsTouch(priv) && !ds->proximity)
> > -                       priv->oldHwProx = 0;
> > -               else if (IsStylus(priv) || IsEraser(priv))
> > -                       priv->oldHwProx = 1;
> > -       }
> > -
> >        /* send a touch out for USB Tablet PCs */
> >        if (IsUSBDevice(common) && !IsTouch(priv)
> >                        && common->wcmTouchDefault && !priv->oldProximity)
> > @@ -1180,19 +1174,18 @@ static void commonDispatchDevice(WacomCommonPtr
> common, unsigned int channel,
> >                filtered.pressure = applyPressureCurve(priv,&filtered);
> >        }
> >
> > -       else if (IsCursor(priv) && !priv->oldHwProx)
> > +       else if (IsCursor(priv) && !priv->oldCursorHwProx)
> >        {
> >                /* initial current max distance for Intuos series */
> >                if ((TabletHasFeature(common, WCM_ROTATION)) ||
> >                                (TabletHasFeature(common, WCM_DUALINPUT)))
> > -                       common->wcmMaxCursorDist = 256;
> > +                       common->wcmMaxCursorDist = MAX_CURSOR_DISTANCE;
> >                else
> >                        common->wcmMaxCursorDist = 0;
> >        }
> >
> > -       /* Store current hard prox for next use */
> > -       if (!IsTouch(priv))
> > -               priv->oldHwProx = ds->proximity;
> > +       /* Store cursor hardware prox for next use */
> > +       priv->oldCursorHwProx = ds->proximity;
>
> Should it be wrapped with "if (IsCursor(priv))" to prevent a pen from
> updating it?  I can't tell from diff alone if its an issue.
>

Good point. It normally should not be an issue. But better safe than sorry.


> What ever the answer:
>
> Reviewed-by: Chris Bagwell <ch...@cnpbagwell.com>
>
> The reset are questions for my understanding.
>

Thank you for the review. I'll wait a few days for more comments. V2 will be
sent sometime next week. My answers to your other questions are below.

>
> >        /* User-requested filtering comes next */
> >
> > @@ -1227,14 +1220,17 @@ static void commonDispatchDevice(WacomCommonPtr
> common, unsigned int channel,
> >        /* force out-prox when distance is outside wcmCursorProxoutDist
> for pucks */
> >        if (IsCursor(priv))
> >        {
> > -               /* force out-prox when distance is outside
> wcmCursorProxoutDist. */
> >                if (common->wcmProtocolLevel == WCM_PROTOCOL_5)
> >                {
> > +                       /* protocol 5 distance starts from the
> MaxCursorDist
> > +                        * when getting in the prox.
> > +                        */
> >                        if (common->wcmMaxCursorDist > filtered.distance)
> >                                common->wcmMaxCursorDist =
> filtered.distance;
> >                }
> >                else
> >                {
> > +                       /* protocol 4 distance is 0 when getting in the
> prox */
> >                        if (common->wcmMaxCursorDist < filtered.distance)
> >                                common->wcmMaxCursorDist =
> filtered.distance;
>
> These if()'s always confused me and the comments help but what is
> behavior of 4 vs. 5 when out of prox?
>

The difference lies in the distance we get. For P5 devices, distance is
reported as the maximum when tool is first detect then gradually reduced to
0 when getting closer to the tablet. The P4 is the opposite: distance is 0
when tool is first in prox. The values increases as the tool gets closer to
the tablet.

Maybe we should normalize it in wcmUSB so they all have some behavior
> here?  Not for this patch of course.
>

Yeah, that can be considered in wcmUSB.c.


>
> >                }
> > diff --git a/src/wcmConfig.c b/src/wcmConfig.c
> > index 2bf0ed3..6235d3c 100644
> > --- a/src/wcmConfig.c
> > +++ b/src/wcmConfig.c
> > @@ -62,7 +62,7 @@ static int wcmAllocate(InputInfoPtr pInfo)
> >        priv->next = NULL;
> >        priv->pInfo = pInfo;
> >        priv->common = common;       /* common info pointer */
> > -       priv->oldHwProx = 1;         /* previous hardware proximity */
> > +       priv->oldCursorHwProx = 0;   /* previous cursor hardware
> proximity */
> >        priv->nPressCtrl [0] = 0;    /* pressure curve x0 */
> >        priv->nPressCtrl [1] = 0;    /* pressure curve y0 */
> >        priv->nPressCtrl [2] = 100;  /* pressure curve x1 */
> > diff --git a/src/wcmUSB.c b/src/wcmUSB.c
> > index 5f0dbe2..e65f24f 100644
> > --- a/src/wcmUSB.c
> > +++ b/src/wcmUSB.c
> > @@ -394,10 +394,6 @@ static void usbInitProtocol5(WacomCommonPtr common,
> const char* id,
> >
> >        /* tilt enabled */
> >        common->wcmFlags |= TILT_ENABLED_FLAG;
> > -
> > -       /* reinitialize max here since 0 is for Graphire series */
> > -       common->wcmMaxCursorDist = 256;
> > -
> >  }
> >
> >  static void usbInitProtocol4(WacomCommonPtr common, const char* id,
> > diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c
> > index 6762a3d..a124ed3 100644
> > --- a/src/xf86Wacom.c
> > +++ b/src/xf86Wacom.c
> > @@ -442,12 +442,6 @@ static int wcmDevInit(DeviceIntPtr pWcm)
> >
> >        wcmRotateTablet(pInfo, common->wcmRotate);
> >
> > -       if (IsTouch(priv))
> > -       {
> > -               /* hard prox out */
> > -               priv->oldHwProx = 0;
> > -       }
> > -
> >        InitWcmDeviceProperties(pInfo);
> >        XIRegisterPropertyHandler(pInfo->dev, wcmSetProperty, NULL,
> wcmDeleteProperty);
> >
> > diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h
> > index 5f5d969..0e57087 100644
> > --- a/src/xf86WacomDefs.h
> > +++ b/src/xf86WacomDefs.h
> > @@ -276,7 +276,7 @@ struct _WacomDeviceRec
> >        int oldThrottle;        /* previous throttle value */
> >        int oldButtons;         /* previous buttons state */
> >        int oldProximity;       /* previous proximity */
> > -       int oldHwProx;          /* previous hardware proximity */
> > +       int oldCursorHwProx;    /* previous cursor hardware proximity */
> >        int old_device_id;      /* last in prox device id */
> >        int old_serial;         /* last in prox tool serial number */
> >        int devReverseCount;    /* Relative ReverseConvert called twice
> each movement*/
> > --
> > 1.7.4
> >
> >
> >
> ------------------------------------------------------------------------------
> > Enable your software for Intel(R) Active Management Technology to meet
> the
> > growing manageability and security demands of your customers. Businesses
> > are taking advantage of Intel(R) vPro (TM) technology - will your
> software
> > be a part of the solution? Download the Intel(R) Manageability Checker
> > today! http://p.sf.net/sfu/intel-dev2devmar
> > _______________________________________________
> > Linuxwacom-devel mailing list
> > Linuxwacom-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
> >
>
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software 
be a part of the solution? Download the Intel(R) Manageability Checker 
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to