On Thu, Mar 04, 2010 at 07:41:57PM -0600, ch...@cnpbagwell.com wrote: > From: Chris Bagwell <ch...@cnpbagwell.com> > > For Bamboo P&T devices, both a touch and pad type are > shared for single input device and can be called in any > order based on xorg.conf. And normal HAL order is to > invoke usbGetRanges() from pad first. > > This meant all logic related to IsTouch() was not > correctly running. Updated to treat pad type as > touch in special case of Bamboo P&T. > > This is applies to devices that have both BTN_TOOL_FINGER > and BTN_TOOL_DOUBLETAP which currently is limitted to > Bamboo touch devices. > > Signed-off-by: Chris Bagwell <ch...@cnpbagwell> > Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> > Reviewed-by: Ping Cheng <pingli...@gmail.com> > ---
oops, sorry, that patch got dropped somehow. merged and pushed. Thanks for resending. Cheers, Peter > src/wcmUSB.c | 21 ++++++++++++++++----- > 1 files changed, 16 insertions(+), 5 deletions(-) > > diff --git a/src/wcmUSB.c b/src/wcmUSB.c > index ed53897..466ffae 100644 > --- a/src/wcmUSB.c > +++ b/src/wcmUSB.c > @@ -613,6 +613,17 @@ int usbWcmGetRanges(LocalDevicePtr local) > unsigned long abs[NBITS(ABS_MAX)] = {0}; > WacomDevicePtr priv = (WacomDevicePtr)local->private; > WacomCommonPtr common = priv->common; > + int is_touch; > + > + is_touch = IsTouch(priv); > + /* Bamboo P&T have both Touch and Pad types on same > + * device. Its normal for this to be called for pad > + * case and logic requires it to act same as Touch > + * case. > + */ > + if (IsPad(priv) && > + common->tablet_id >= 0xd0 && common->tablet_id <= 0xd3) > + is_touch = 1; > > if (ioctl(local->fd, EVIOCGBIT(0 /*EV*/, sizeof(ev)), ev) < 0) > { > @@ -647,7 +658,7 @@ int usbWcmGetRanges(LocalDevicePtr local) > xf86Msg(X_ERROR, "%s: xmax value is wrong.\n", local->name); > return !Success; > } > - if (!IsTouch(priv)) > + if (!is_touch) > common->wcmMaxX = absinfo.maximum; > else > common->wcmMaxTouchX = absinfo.maximum; > @@ -664,7 +675,7 @@ int usbWcmGetRanges(LocalDevicePtr local) > xf86Msg(X_ERROR, "%s: ymax value is wrong.\n", local->name); > return !Success; > } > - if (!IsTouch(priv)) > + if (!is_touch) > common->wcmMaxY = absinfo.maximum; > else > common->wcmMaxTouchY = absinfo.maximum; > @@ -673,7 +684,7 @@ int usbWcmGetRanges(LocalDevicePtr local) > * or touch physical X for TabletPCs with touch */ > if (ioctl(local->fd, EVIOCGABS(ABS_RX), &absinfo) == 0) > { > - if (IsTouch(priv)) > + if (is_touch) > common->wcmTouchResolX = absinfo.maximum; > else > common->wcmMaxStripX = absinfo.maximum; > @@ -683,13 +694,13 @@ int usbWcmGetRanges(LocalDevicePtr local) > * or touch physical Y for TabletPCs with touch */ > if (ioctl(local->fd, EVIOCGABS(ABS_RY), &absinfo) == 0) > { > - if (IsTouch(priv)) > + if (is_touch) > common->wcmTouchResolY = absinfo.maximum; > else > common->wcmMaxStripY = absinfo.maximum; > } > > - if (IsTouch(priv) && common->wcmTouchResolX && common->wcmMaxTouchX) > + if (is_touch && common->wcmTouchResolX && common->wcmMaxTouchX) > { > common->wcmTouchResolX = (int)(((double)common->wcmTouchResolX) > / ((double)common->wcmMaxTouchX) + 0.5); > -- > 1.6.6.1 ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel