diff --git a/Xi/exevents.c b/Xi/exevents.c index 0d8322a9d..dc9eba70e 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -539,7 +539,7 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to) to->valuator = xrealloc(to->valuator, sizeof(ValuatorClassRec) + from->valuator->numAxes * sizeof(AxisInfo) + - from->valuator->numAxes * sizeof(unsigned int)); + from->valuator->numAxes * sizeof(double)); v = to->valuator; if (!v) FatalError("[Xi] no memory for class shift.\n"); @@ -548,7 +548,7 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to) v->axes = (AxisInfoPtr)&v[1]; memcpy(v->axes, from->valuator->axes, v->numAxes * sizeof(AxisInfo)); - v->axisVal = (int*)(v->axes + from->valuator->numAxes); + v->axisVal = (double*)(v->axes + from->valuator->numAxes); v->sourceid = from->id; } else if (to->valuator && !from->valuator) { @@ -844,6 +844,7 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event) { /* XXX: Relative/Absolute mode */ v->axisVal[i] = event->valuators.data[i]; + v->axisVal[i] += event->valuators.data_frac[i]; } } diff --git a/Xi/queryst.c b/Xi/queryst.c index 2b20837d1..c6858e4e0 100644 --- a/Xi/queryst.c +++ b/Xi/queryst.c @@ -85,7 +85,7 @@ ProcXQueryDeviceState(ClientPtr client) xValuatorState *tv; xQueryDeviceStateReply rep; DeviceIntPtr dev; - int *values; + double *values; REQUEST(xQueryDeviceStateReq); REQUEST_SIZE_MATCH(xQueryDeviceStateReq); diff --git a/dix/devices.c b/dix/devices.c index a5b111c75..5d4d3b21a 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -1170,7 +1170,7 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, valc = (ValuatorClassPtr)xcalloc(1, sizeof(ValuatorClassRec) + numAxes * sizeof(AxisInfo) + - numAxes * sizeof(unsigned int)); + numAxes * sizeof(double)); if (!valc) return FALSE; @@ -1184,7 +1184,7 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, valc->numAxes = numAxes; valc->mode = mode; valc->axes = (AxisInfoPtr)(valc + 1); - valc->axisVal = (int *)(valc->axes + numAxes); + valc->axisVal = (double *)(valc->axes + numAxes); dev->valuator = valc; AllocateMotionHistory(dev); diff --git a/include/inputstr.h b/include/inputstr.h index d7aedac3d..10062ad2e 100644 --- a/include/inputstr.h +++ b/include/inputstr.h @@ -235,7 +235,7 @@ typedef struct _ValuatorClassRec { AxisInfoPtr axes; unsigned short numAxes; - int *axisVal; /* always absolute, but device-coord system */ + double *axisVal; /* always absolute, but device-coord system */ CARD8 mode; ValuatorAccelerationRec accelScheme; } ValuatorClassRec, *ValuatorClassPtr;