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.hutte...@who-t.net> --- dix/ptrveloc.c | 31 ++++++++++++++++--------------- 1 files changed, 16 insertions(+), 15 deletions(-) diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c index f4fcd39..0741604 100644 --- a/dix/ptrveloc.c +++ b/dix/ptrveloc.c @@ -712,21 +712,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); } } @@ -1122,7 +1122,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; @@ -1157,10 +1157,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 -- 1.7.4.4 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel