On Sun, Dec 12, 2010 at 7:33 PM, Peter Hutterer
<[email protected]> wrote:
> And clean up the code to use less ABI ifdefs.
>
> Signed-off-by: Peter Hutterer <[email protected]>

Reviewed-by: Ping Cheng <[email protected]>

with one typo correction and a few minor comments inline. Everything
else looks fine.

Ping

> ---
>  src/xf86Wacom.c |  312 ++++++++++++++++++++++++++++++------------------------
>  1 files changed, 173 insertions(+), 139 deletions(-)
>
> diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c
> index d4cdae8..ce91538 100644
> --- a/src/xf86Wacom.c
> +++ b/src/xf86Wacom.c
> @@ -51,6 +51,8 @@
>  #include <xserver-properties.h>
>  #include <X11/extensions/XKB.h>
>  #include <xkbsrv.h>
> +#else
> +#define XIGetKnownProperty(prop) 0
>  #endif
>
>  static int wcmDevOpen(DeviceIntPtr pWcm);
> @@ -398,6 +400,175 @@ static void wcmInitialToolSize(InputInfoPtr pInfo)
>        return;
>  }
>
> +static int
> +wcmInitAxes(DeviceIntPtr pWcm)
> +{
> +       InputInfoPtr pInfo = (InputInfoPtr)pWcm->public.devicePrivate;
> +       WacomDevicePtr priv = (WacomDevicePtr)pInfo->private;
> +       WacomCommonPtr common = priv->common;
> +
> +       Atom label;
> +       int min, max, min_res, max_res, res;
> +       int mode;
> +
> +
> +       /* first two valuators are initialised elsewhere */
> +       if (!IsPad(priv))
> +       {
> +               wcmInitialToolSize(pInfo);
> +
> +               if (wcmInitArea(pInfo) == FALSE)
> +                       return FALSE;
> +
> +               wcmInitialCoordinates(priv->pInfo, 0);
> +               wcmInitialCoordinates(priv->pInfo, 1);
> +
> +               /* Rotation rotates the Max X and Y */
> +               wcmRotateTablet(pInfo, common->wcmRotate);
> +       }
> +
> +
> +       /* third valuator: pressure */
> +
> +       if (!IsPad(priv))
> +       {
> +               label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_PRESSURE);
> +               min = 0;
> +               /* pressure normalized to FILTER_PRESSURE_RES */
> +               max = FILTER_PRESSURE_RES;
> +               min_res = max_res = res = 1;
> +               mode = Absolute;
> +
> +       } else {
> +               /* The pad doesn't have a pressure axis, so initialise third
> +                * axis as unknown relative axis on the pad. This way, we
> +                * can leave the strip/abswheel axes on later axes and don't
> +                * run the danger of clients misinterpreting the axis info
> +                */
> +               label = None;
> +               min = max = -1;
> +               min_res = 0;
> +               max_res = res = -1;
> +               mode = Relative;
> +       }
> +
> +
> +       InitValuatorAxisStruct(pInfo->dev, 2,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> +                              label,
> +#endif
> +                              min, max, res, min_res, max_res
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                              , mode
> +#endif
> +                              );
> +
> +       /* fourth valuator: tilt-x, cursor:z-rotation, pad:strip-x */
> +
> +       if (IsCursor(priv))
> +       {
> +               label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_RZ);
> +               min = -900;
> +               max = -899;

max = 899;

> +               min_res = max_res = res = 1;
> +               mode = Absolute;
> +       } else if (IsPad(priv))
> +       {
> +               label = None; /* XXX: what is this axis? */
> +               min = 0;
> +               max = 1; /* dummy value if !HasFeature(WCM_STRIP) */
> +               min_res = max_res = res = 1;
> +               mode = Absolute;
> +               if (TabletHasFeature(common, WCM_STRIP))
> +                       max = common->wcmMaxStripX;

Should we give STRIP a label and reassign it instead of leaving it as None here?

> +       } else
> +       {
> +                       label = 
> XIGetKnownProperty(AXIS_LABEL_PROP_ABS_TILT_X),
> +                       min = -64;
> +                       max = 63;
> +                       min_res = max_res = res = 1;
> +                       mode = Absolute;
> +       }
> +
> +       InitValuatorAxisStruct(pInfo->dev, 3,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> +                              label,
> +#endif
> +                              min, max, res, min_res, max_res
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                              , mode
> +#endif
> +                              );
> +
> +       /* fifth valuator: tilt-y, cursor:throttle, pad:strip-y */
> +
> +       if (IsCursor(priv))
> +       {
> +               label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_THROTTLE);
> +               min = -1023;
> +               max = 1023;
> +               min_res = max_res = res = 1;
> +               mode = Absolute;
> +       } else if (IsPad(priv))
> +       {
> +               label = None; /* XXX: what is this axis? */
> +               min = 0;
> +               max = 1; /* dummy value if !HasFeature(WCM_STRIP) */
> +               min_res = max_res = res = 1;
> +               mode = Absolute;
> +               if (TabletHasFeature(common, WCM_STRIP))
> +                       max = common->wcmMaxStripY;

Same for Y.

> +       } else
> +       {
> +               label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_TILT_Y);
> +               min = -64;
> +               max = 63;
> +               min_res = max_res = res = 1;
> +               mode = Absolute;
> +       }
> +
> +       InitValuatorAxisStruct(pInfo->dev, 4,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> +                              label,
> +#endif
> +                              min, max, res, min_res, max_res
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                              , mode
> +#endif
> +                              );
> +
> +       /* fifth valuator: stylus:rotation, pad:abs-wheel */

/* fifth valuator: airbrush: abs-wheel, artpen: rotation, pad:abs-wheel */

> +
> +       if (IsStylus(priv))
> +       {
> +               label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_WHEEL);
> +               max = MAX_ROTATION_RANGE + MIN_ROTATION - 1;
> +               min = MIN_ROTATION;
> +               min_res = max_res = res = 1;
> +               mode = Absolute;
> +       } else if ((TabletHasFeature(common, WCM_RING)) && IsPad(priv))
> +       {
> +               /* Touch ring */
> +               label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_WHEEL);
> +               min = 0;
> +               max = 71;
> +               min_res = max_res = res = 1;
> +               mode = Absolute;
> +       }
> +
> +       InitValuatorAxisStruct(pInfo->dev, 5,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> +                              label,
> +#endif
> +                              min, max, res, min_res, max_res
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                              , mode
> +#endif
> +                              );
> +
> +       return TRUE;
> +}
> +
>  /*****************************************************************************
>  * wcmDevInit --
>  *    Set up the device's buttons, axes and keys
> @@ -407,7 +578,6 @@ static int wcmDevInit(DeviceIntPtr pWcm)
>  {
>        InputInfoPtr pInfo = (InputInfoPtr)pWcm->public.devicePrivate;
>        WacomDevicePtr priv = (WacomDevicePtr)pInfo->private;
> -       WacomCommonPtr common = priv->common;
>        unsigned char butmap[WCM_MAX_BUTTONS+1];
>        int nbaxes, nbbuttons, nbkeys;
>        int loop;
> @@ -506,144 +676,8 @@ static int wcmDevInit(DeviceIntPtr pWcm)
>                return FALSE;
>        }
>
> -       if (!IsPad(priv))
> -       {
> -               wcmInitialToolSize(pInfo);
> -
> -               if (wcmInitArea(pInfo) == FALSE)
> -               {
> -                       return FALSE;
> -               }
> -
> -               wcmInitialCoordinates(priv->pInfo, 0);
> -               wcmInitialCoordinates(priv->pInfo, 1);
> -
> -               /* Rotation rotates the Max X and Y */
> -               wcmRotateTablet(pInfo, common->wcmRotate);
> -
> -               /* pressure normalized to FILTER_PRESSURE_RES */
> -               InitValuatorAxisStruct(pInfo->dev, 2,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -                               
> XIGetKnownProperty(AXIS_LABEL_PROP_ABS_PRESSURE),
> -#endif
> -                               0, FILTER_PRESSURE_RES, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -                               , Absolute
> -#endif
> -                               );
> -
> -       } else {
> -               /* The pad doesn't have a pressure axis, so initialise third
> -                * axis as unknown relative axis on the pad. This way, we
> -                * can leave the strip/abswheel axes on later axes and don't
> -                * run the danger of clients misinterpreting the axis info
> -                */
> -               InitValuatorAxisStruct(pInfo->dev, 2,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -                               None,
> -#endif
> -                               -1, -1, 0, -1, -1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -                               , Relative
> -#endif
> -                               );
> -       }
> -
> -       if (IsCursor(priv))
> -       {
> -               /* z-rot and throttle */
> -               InitValuatorAxisStruct(pInfo->dev, 3,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -               XIGetKnownProperty(AXIS_LABEL_PROP_ABS_RZ),
> -#endif
> -               -900, 899, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -               , Absolute
> -#endif
> -               );
> -               InitValuatorAxisStruct(pInfo->dev, 4,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -               XIGetKnownProperty(AXIS_LABEL_PROP_ABS_THROTTLE),
> -#endif
> -               -1023, 1023, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -               , Absolute
> -#endif
> -               );
> -       }
> -       else if (IsPad(priv))
> -       {
> -               /* strip-x and strip-y */
> -               if (TabletHasFeature(common, WCM_STRIP))
> -               {
> -                       InitValuatorAxisStruct(pInfo->dev, 3,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -                               0, /* XXX what is this axis?*/
> -#endif
> -                               0, common->wcmMaxStripX, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -                               , Absolute
> -#endif
> -                               );
> -                       InitValuatorAxisStruct(pInfo->dev, 4,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -                               0, /* XXX what is this axis?*/
> -#endif
> -                               0, common->wcmMaxStripY, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -                               , Absolute
> -#endif
> -                               );
> -               }
> -       }
> -       else
> -       {
> -               /* tilt-x and tilt-y */
> -               InitValuatorAxisStruct(pInfo->dev, 3,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -                               
> XIGetKnownProperty(AXIS_LABEL_PROP_ABS_TILT_X),
> -#endif
> -                               -64, 63, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -                               , Absolute
> -#endif
> -                               );
> -               InitValuatorAxisStruct(pInfo->dev, 4,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -                               
> XIGetKnownProperty(AXIS_LABEL_PROP_ABS_TILT_Y),
> -#endif
> -                               -64, 63, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -                               , Absolute
> -#endif
> -                               );
> -       }
> -
> -       if (IsStylus(priv))
> -       {
> -               int maxRotation = MAX_ROTATION_RANGE + MIN_ROTATION - 1;
> -               /* Art Marker Pen rotation or Airbrush absolute Wheel */
> -               InitValuatorAxisStruct(pInfo->dev, 5,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -                               XIGetKnownProperty(AXIS_LABEL_PROP_ABS_WHEEL),
> -#endif
> -                               MIN_ROTATION, maxRotation, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -                               , Absolute
> -#endif
> -                               );
> -       }
> -       else if ((TabletHasFeature(common, WCM_RING)) && IsPad(priv))
> -               /* Touch ring */
> -               InitValuatorAxisStruct(pInfo->dev, 5,
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> -                               XIGetKnownProperty(AXIS_LABEL_PROP_ABS_WHEEL),
> -#endif
> -                               0, 71, 1, 1, 1
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> -                               , Absolute
> -#endif
> -                               );
> +       if (!wcmInitAxes(pWcm))
> +               return FALSE;
>
>        if (IsTouch(priv))
>        {
> --
> 1.7.3.3
>
> Cheers,
>  Peter
>
> ------------------------------------------------------------------------------
> Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL,
> new data types, scalar functions, improved concurrency, built-in packages,
> OCI, SQL*Plus, data movement tools, best practices and more.
> http://p.sf.net/sfu/oracle-sfdev2dev
> _______________________________________________
> Linuxwacom-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
>

------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to