//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:13:32 +00:00
parent f1768677f7
commit 159e443a22

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) {