On Thu, May 1, 2014 at 10:00 PM, Peter Hutterer
<peter.hutte...@who-t.net> wrote:
> On Wed, Apr 30, 2014 at 07:00:37PM -0700, Jason Gerecke wrote:
>> The factor[XY] variables were introduced to make relative devices behave
>> more naturally by taking into account the differences between screen
>> space and device space. In particular, these variables were used to
>> provide uniform acceleration along the X and Y axes, along with
>> suppressing events that moved the cursor less than one pixel.
>>
>> While these functions would still be nice to have, the variables
>> themselves are vestigal since they cannot be calculated properly
>> anymore. The X server is now (actually, for quite some time) responsible
>> for mapping the device to specific areas of the screen, and our driver
>> no longer has any notion of screen dimension.
>
> fwiw, if you want to detect this at compile time, the server takes the
> resolution of the device into account since ABI_XINPUT_VERSION 19.2. Since
> then, a circle on a tablet in rel mode should be a circle on the screen,
> regardless of any other influences.
>
> Having said that, feel free to purge this code though, I'll cheer on you all
> the way to the repo :)
>
> Cheers,
>    Peter
>

I don't think there's much point to doing a compile-time check. The
calculation of factor[XY] requires knowledge of the screen resolution,
but that code was removed circa 0.10.11 (early 2011). If somebody were
impacted by the change, they've already had three years to complain ;)

I forgot that the server handles this in the background now ([1],
right?). I guess I should tweak the patch description slightly...

[1]: http://who-t.blogspot.com/2013/01/how-to-move-cursor.html

Jason
---
Now instead of four in the eights place /
you’ve got three, ‘Cause you added one  /
(That is to say, eight) to the two,     /
But you can’t take seven from three,    /
So you look at the sixty-fours....

>>
>> NOTE: Strictly speaking factor[XY] aren't /entirely/ dead. There is *one*
>> case where they are still set to a value other than 1.0 (setting either
>> TopX or TopY in xorg.conf). However, this side-effect is not at all
>> what is intended/expected so the functionality is still safe to remove.
>>
>> Signed-off-by: Jason Gerecke <killert...@gmail.com>
>> ---
>>  src/wcmCommon.c     | 40 ----------------------------------------
>>  src/xf86Wacom.c     |  1 -
>>  src/xf86Wacom.h     |  3 ---
>>  src/xf86WacomDefs.h |  2 --
>>  4 files changed, 46 deletions(-)
>>
>> diff --git a/src/wcmCommon.c b/src/wcmCommon.c
>> index 87bc76c..7f78d0c 100644
>> --- a/src/wcmCommon.c
>> +++ b/src/wcmCommon.c
>> @@ -86,38 +86,6 @@ void set_absolute(InputInfoPtr pInfo, Bool absolute)
>>  }
>>
>>  
>> /*****************************************************************************
>> - * wcmMappingFactor --
>> - *   calculate the proper tablet to screen mapping factor according to the
>> - *   screen/desktop size and the tablet size
>> - 
>> ****************************************************************************/
>> -
>> -void wcmMappingFactor(InputInfoPtr pInfo)
>> -{
>> -     WacomDevicePtr priv = (WacomDevicePtr) pInfo->private;
>> -     double size_x, size_y;
>> -
>> -     DBG(10, priv, "\n"); /* just prints function name */
>> -
>> -     DBG(10, priv,
>> -             "Active tablet area x=%d y=%d map\n",
>> -             priv->bottomX, priv->bottomY);
>> -
>> -     /* bottomX/bottomY are scaled values of maxX/maxY such that it
>> -      * will scale tablet to screen ratio when passed to xf86AxisScale().
>> -      * Use this to compute similar factor for scaling in relative
>> -      * mode.  If screen:tablet are 1:1 ratio then no scaling.
>> -      */
>> -
>> -     size_x = priv->bottomX - priv->topX;
>> -     size_y = priv->bottomY - priv->topY;
>> -
>> -     priv->factorX = size_x / priv->bottomX;
>> -     priv->factorY = size_y / priv->bottomY;
>> -     DBG(2, priv, "X factor = %.3f, Y factor = %.3f\n",
>> -             priv->factorX, priv->factorY);
>> -}
>> -
>> -/*****************************************************************************
>>   * wcmSendButtons --
>>   *   Send button events by comparing the current button mask with the
>>   *   previous one.
>> @@ -610,12 +578,6 @@ wcmSendNonPadEvents(InputInfoPtr pInfo, const 
>> WacomDeviceState *ds,
>>       /* coordinates are ready we can send events */
>>       if (ds->proximity)
>>       {
>> -             /* unify acceleration in both directions
>> -              * for relative mode to draw a circle
>> -              */
>> -             if (!is_absolute(pInfo))
>> -                     valuators[0] *= priv->factorY / priv->factorX;
>> -
>>               /* don't emit proximity events if device does not support 
>> proximity */
>>               if ((pInfo->dev->proximity && !priv->oldProximity))
>>                       xf86PostProximityEventP(pInfo->dev, 1, first_val, 
>> num_vals,
>> @@ -1310,8 +1272,6 @@ static void commonDispatchDevice(WacomCommonPtr 
>> common, unsigned int channel,
>>                */
>>               double deltx = filtered.x - priv->oldX;
>>               double delty = filtered.y - priv->oldY;
>> -             deltx *= priv->factorX;
>> -             delty *= priv->factorY;
>>
>>               /* less than one device coordinate movement? */
>>               if (abs(deltx)<1 && abs(delty)<1)
>> diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c
>> index 5290c4e..7b565a0 100644
>> --- a/src/xf86Wacom.c
>> +++ b/src/xf86Wacom.c
>> @@ -425,7 +425,6 @@ static int wcmDevInit(DeviceIntPtr pWcm)
>>       if (!IsPad(priv))
>>       {
>>               wcmInitialToolSize(pInfo);
>> -             wcmMappingFactor(pInfo);
>>       }
>>
>>       if (!wcmInitAxes(pWcm))
>> diff --git a/src/xf86Wacom.h b/src/xf86Wacom.h
>> index 3f1b028..514a5c2 100644
>> --- a/src/xf86Wacom.h
>> +++ b/src/xf86Wacom.h
>> @@ -124,9 +124,6 @@ void wcmEvent(WacomCommonPtr common, unsigned int 
>> channel, const WacomDeviceStat
>>  /* dispatches data to XInput event system */
>>  void wcmSendEvents(InputInfoPtr pInfo, const WacomDeviceState* ds);
>>
>> -/* calculate the proper tablet to screen mapping factor */
>> -void wcmMappingFactor(InputInfoPtr pInfo);
>> -
>>  /* validation */
>>  extern Bool wcmIsAValidType(InputInfoPtr pInfo, const char* type);
>>  extern Bool wcmIsWacomDevice (char* fname);
>> diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h
>> index 0894880..6ff9fa9 100644
>> --- a/src/xf86WacomDefs.h
>> +++ b/src/xf86WacomDefs.h
>> @@ -240,8 +240,6 @@ struct _WacomDeviceRec
>>       int resolY;             /* Y resolution */
>>       int maxX;               /* tool physical maxX in device coordinates*/
>>       int maxY;               /* tool physical maxY in device coordinates*/
>> -     double factorX;         /* X factor */
>> -     double factorY;         /* Y factor */
>>       unsigned int serial;    /* device serial number this device takes (if 
>> 0, any serial is ok) */
>>       unsigned int cur_serial; /* current serial in prox */
>>       int cur_device_id;      /* current device ID in prox */
>> --
>> 1.9.2

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.  Get 
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to