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:
parent
4c6bc0e765
commit
f32c827d51
|
@ -635,7 +635,7 @@ eventToDeviceEvent(DeviceEvent *ev, xEvent **xi)
|
||||||
SetBit(ptr, i);
|
SetBit(ptr, i);
|
||||||
axisval->integral = trunc(ev->valuators.data[i]);
|
axisval->integral = trunc(ev->valuators.data[i]);
|
||||||
axisval->frac = (ev->valuators.data[i] - axisval->integral) *
|
axisval->frac = (ev->valuators.data[i] - axisval->integral) *
|
||||||
(1UL << 32);
|
(1 << 16) * (1 << 16);
|
||||||
axisval++;
|
axisval++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -679,10 +679,12 @@ eventToRawEvent(RawDeviceEvent *ev, xEvent **xi)
|
||||||
{
|
{
|
||||||
SetBit(ptr, i);
|
SetBit(ptr, i);
|
||||||
axisval->integral = trunc(ev->valuators.data[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->integral = trunc(ev->valuators.data_raw[i]);
|
||||||
axisval_raw->frac = ev->valuators.data_raw[i] -
|
axisval_raw->frac =
|
||||||
axisval_raw->integral;
|
(ev->valuators.data_raw[i] - axisval_raw->integral) *
|
||||||
|
(1 << 16) * (1 << 16);
|
||||||
axisval++;
|
axisval++;
|
||||||
axisval_raw++;
|
axisval_raw++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue