//bugs.freedesktop.org/show_bug.cgi?id=1688) attachment #1530

(https://bugs.freedesktop.org/attachment.cgi?id=1530): Fix the current
    implementation to make it possible to slow down the mouse pointer or
    use arbitrary fractions (without running into rounding error issues).
    The change is using the same method of preserving rounding errors that
    the exponential method is already using. Patch by Jan Brunner
    <Jan_B@gmx.ch>.
This commit is contained in:
Roland Mainz 2004-12-13 02:15:29 +00:00
parent fe18885917
commit 828cdc528d

View file

@ -932,10 +932,15 @@ xf86PostMotionEvent(DeviceIntPtr device,
/* modeled from xf86Events.c */
if (device->ptrfeed->ctrl.threshold) {
if ((abs(dx) + abs(dy)) >= device->ptrfeed->ctrl.threshold) {
valuator[0] = (dx * device->ptrfeed->ctrl.num) /
device->ptrfeed->ctrl.den;
valuator[1] = (dy * device->ptrfeed->ctrl.num) /
device->ptrfeed->ctrl.den;
local->dxremaind = ((float)dx * (float)(device->ptrfeed->ctrl.num)) /
(float)(device->ptrfeed->ctrl.den) + local->dxremaind;
valuator[0] = (int)local->dxremaind;
local->dxremaind = local->dxremaind - (float)valuator[0];
local->dyremaind = ((float)dy * (float)(device->ptrfeed->ctrl.num)) /
(float)(device->ptrfeed->ctrl.den) + local->dyremaind;
valuator[1] = (int)local->dyremaind;
local->dyremaind = local->dyremaind - (float)valuator[1];
}
}
else if (dx || dy) {