diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2011-04-20 15:39:27 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-04-21 14:22:30 +1000 |
commit | 81c6e79f42cc263349e04c0d82b3a85d6b557885 (patch) | |
tree | cc7ea6780b1f0b9d3bc7085f861ad8e0ca96c71d /dix | |
parent | 5870d507cee8547c0993791195fe04d96b271289 (diff) |
dix: reduce the work done by ApplySoftening
We can modify fdx/fdy in-place rather than requiring dx/dy as well. And the
decision to soften can be made in the caller (unless decided by the velocity
state).
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Jamey Sharp <jamey@minilop.net>
Reviewed-by: Simon Thum <simon.thum@gmx.de>
Diffstat (limited to 'dix')
-rw-r--r-- | dix/ptrveloc.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c index a7101fcf7..dcb4e4b04 100644 --- a/dix/ptrveloc.c +++ b/dix/ptrveloc.c @@ -708,21 +708,21 @@ ApplySimpleSoftening(int prev_delta, int delta) } +/** + * Soften the delta based on previous deltas stored in vel. + * + * @param[in,out] fdx Delta X, modified in-place. + * @param[in,out] fdx Delta Y, modified in-place. + */ static void ApplySoftening( DeviceVelocityPtr vel, - int dx, - int dy, float* fdx, - float* fdy, - BOOL do_soften) + float* fdy) { - if (do_soften && vel->use_softening) { - *fdx = ApplySimpleSoftening(vel->last_dx, dx); - *fdy = ApplySimpleSoftening(vel->last_dy, dy); - } else { - *fdx = dx; - *fdy = dy; + if (vel->use_softening) { + *fdx = ApplySimpleSoftening(vel->last_dx, *fdx); + *fdy = ApplySimpleSoftening(vel->last_dy, *fdy); } } @@ -1118,7 +1118,7 @@ acceleratePointerPredictable( ValuatorMask* val, CARD32 evtime) { - float fdx, fdy, tmp, mult; /* no need to init */ + float tmp, mult; /* no need to init */ int dx = 0, dy = 0, tmpi; DeviceVelocityPtr velocitydata = GetDevicePredictableAccelData(dev); Bool soften = TRUE; @@ -1153,10 +1153,11 @@ acceleratePointerPredictable( (float)dev->ptrfeed->ctrl.den); if(mult != 1.0f || velocitydata->const_acceleration != 1.0f) { - ApplySoftening(velocitydata, - dx, dy, - &fdx, &fdy, - (mult > 1.0f) && soften); + float fdx = dx, + fdy = dy; + + if (mult > 1.0f && soften) + ApplySoftening(velocitydata, &fdx, &fdy); ApplyConstantDeceleration(velocitydata, &fdx, &fdy); /* Calculate the new delta (with accel) and drop it back |