Input: Fix frac calculation on [Raw]DeviceEvent conversion

(1UL << 32) evaluates to 0 (at least here), so do the
fraction calculation in two steps as in libXi. Fractions on xXIRawEvent
were not multiplied at all, which also gave 0 as result.

Signed-off-by: Max Schwarz <Max@x-quadraht.de>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Max Schwarz 2011-09-25 20:44:26 +02:00 committed by Peter Hutterer
parent 4c6bc0e765
commit f32c827d51

View File

@ -635,7 +635,7 @@ eventToDeviceEvent(DeviceEvent *ev, xEvent **xi)
SetBit(ptr, i);
axisval->integral = trunc(ev->valuators.data[i]);
axisval->frac = (ev->valuators.data[i] - axisval->integral) *
(1UL << 32);
(1 << 16) * (1 << 16);
axisval++;
}
}
@ -679,10 +679,12 @@ eventToRawEvent(RawDeviceEvent *ev, xEvent **xi)
{
SetBit(ptr, i);
axisval->integral = trunc(ev->valuators.data[i]);
axisval->frac = ev->valuators.data[i] - axisval->integral;
axisval->frac = (ev->valuators.data[i] - axisval->integral) *
(1 << 16) * (1 << 16);
axisval_raw->integral = trunc(ev->valuators.data_raw[i]);
axisval_raw->frac = ev->valuators.data_raw[i] -
axisval_raw->integral;
axisval_raw->frac =
(ev->valuators.data_raw[i] - axisval_raw->integral) *
(1 << 16) * (1 << 16);
axisval++;
axisval_raw++;
}