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
