From 81c6e79f42cc263349e04c0d82b3a85d6b557885 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 20 Apr 2011 15:39:27 +1000 Subject: [PATCH] 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 Reviewed-by: Daniel Stone Reviewed-by: Jamey Sharp Reviewed-by: Simon Thum --- dix/ptrveloc.c | 31 ++++++++++++++++--------------- 1 file 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