summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dix/ptrveloc.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c
index 1590cfdbf..7c49cf5cb 100644
--- a/dix/ptrveloc.c
+++ b/dix/ptrveloc.c
@@ -988,14 +988,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);
}
}
}