A high resolution device that's moving fast can potentially generate

an int overflow, making dx*dx+dy*dy negative. Now pow(negative,
non-integer) yields NaN, so you loose.  Use fp math to avoid that.
(cherry picked from commit 12d27cf33c)
This commit is contained in:
Otto Moerbeek 2007-08-23 21:59:25 +02:00 committed by Eric Anholt
parent bcd6708895
commit a964d54128

View File

@ -250,7 +250,7 @@ acceleratePointer(DeviceIntPtr pDev, int first_valuator, int num_valuators,
}
}
else {
mult = pow((float)(dx * dx + dy * dy),
mult = pow((float)((float)dx * (float)dx + (float)dy * (float)dy),
((float)(pDev->ptrfeed->ctrl.num) /
(float)(pDev->ptrfeed->ctrl.den) - 1.0) /
2.0) / 2.0;