On Wed, Jan 5, 2011 at 11:00 PM, Peter Hutterer
<[email protected]> wrote:
> Subtracting two values seems to be a far simpler way of calculating a delta.
> This fixes the jumping strip on the I3 devices, at least for the vertical
> one. Horizontal one untested for lack of device.
>
> Signed-off-by: Peter Hutterer <[email protected]>
> ---
> tbh, I did not figure out what the old code was supposed to do, but the data
> my I3 gives me suggests a range of 0...4096 in bit-wise increments (i.e. 0,
> 1,2 4, 8, 16, etc.). I guess this is where this code comes from, but since
> we only care about value > 0 or < 0, this was a rather roundabout way.
The idea was to get the actual scales a finger has moved over so we
can speed up/slow down the corresponding events. Since we are not
posting the event that way, it is fine to only check the difference.
> src/wcmCommon.c | 25 ++-----------------------
> 1 files changed, 2 insertions(+), 23 deletions(-)
>
> diff --git a/src/wcmCommon.c b/src/wcmCommon.c
> index bd1a198..8d138af 100644
> --- a/src/wcmCommon.c
> +++ b/src/wcmCommon.c
> @@ -429,18 +429,7 @@ static int getWheelButton(InputInfoPtr pInfo, const
> WacomDeviceState* ds,
> /* emulate events for left strip */
> if ( ds->stripx != priv->oldStripX )
> {
> - int temp = 0, n, i;
> - for (i=1; i<14; i++)
> - {
> - n = 1 << (i-1);
> - if ( ds->stripx & n )
> - temp = i;
> - if ( priv->oldStripX & n )
> - value = i;
> - if ( temp & value) break;
> - }
> -
> - value -= temp;
> + value = ds->stripx - priv->oldStripX;
>
> fakeButton = (value > 0) ? priv->striplup : priv->stripldn;
> *fakeKey = (value > 0) ? priv->strip_keys[0] :
> priv->strip_keys[1];
> @@ -449,18 +438,8 @@ static int getWheelButton(InputInfoPtr pInfo, const
> WacomDeviceState* ds,
> /* emulate events for right strip */
> if ( ds->stripy != priv->oldStripY )
> {
> - int temp = 0, n, i;
> - for (i=1; i<14; i++)
> - {
> - n = 1 << (i-1);
> - if ( ds->stripy & n )
> - temp = i;
> - if ( priv->oldStripY & n )
> - value = i;
> - if ( temp & value) break;
> - }
> + value = ds->stripy - priv->oldStripY;
>
> - value -= temp;
> fakeButton = (value > 0) ? priv->striprup : priv->striprdn;
> *fakeKey = (value > 0) ? priv->strip_keys[2] :
> priv->strip_keys[2];
As you've touched in the commit comments, value = 0 should not post an
event. We need to update the above two lines accordingly.
Thank you.
Ping
------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel