dix: fix warning in pointer acceleration

newer gcc's warn against how this cast is done (though it eludes me why),
and lrintf() is also faster especially on insane processors like the P4
(http://www.mega-nerd.com/FPcast).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Simon Thum 2009-04-30 12:58:48 +02:00 committed by Peter Hutterer
parent 1b1b20d6e3
commit 35fce4e5c7

View File

@ -994,14 +994,20 @@ acceleratePointerPredictable(
if (dx) {
tmp = mult * fdx + pDev->last.remainder[0];
*px = (int)roundf(tmp);
/* Since it may not be apparent: lrintf() does not offer
* strong statements about rounding; however because we
* process each axis conditionally, there's no danger
* of a toggling remainder. Its lack of guarantees hopefully
* makes it faster on the average target. */
*px = lrintf(tmp);
pDev->last.remainder[0] = tmp - (float)*px;
}
if (dy) {
tmp = mult * fdy + pDev->last.remainder[1];
*py = (int)roundf(tmp);
*py = lrintf(tmp);
pDev->last.remainder[1] = tmp - (float)*py;
}
DebugAccelF("pos (%i | %i) remainders x: %.3f y: %.3f delta x:%.3f y:%.3f\n", *px, *py, pDev->last.remainder[0], pDev->last.remainder[1], fdx, fdy);
}
}
}