diff --git a/dix/devices.c b/dix/devices.c index 86e1e7a25..a5110fffa 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -285,10 +285,9 @@ CorePointerProc(DeviceIntPtr pDev, int what) case DEVICE_INIT: for (i = 1; i <= 32; i++) map[i] = i; - /* we don't keep history, for now. */ InitPointerDeviceStruct((DevicePtr)pDev, map, 32, - NULL, (PtrCtrlProcPtr)NoopDDA, - 0, 2); + GetMotionHistory, (PtrCtrlProcPtr)NoopDDA, + GetMotionHistorySize(), 2); pDev->valuator->axisVal[0] = screenInfo.screens[0]->width / 2; pDev->valuator->lastx = pDev->valuator->axisVal[0]; pDev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2; diff --git a/dix/getevents.c b/dix/getevents.c index 8e22ad6a6..0a228cd01 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -591,6 +591,8 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) valuators[1 - first_valuator] = y; + updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators); + if (pDev->coreEvents) { cp->valuator->lastx = x; cp->valuator->lasty = y; diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c index 78943e487..724f724db 100644 --- a/hw/kdrive/src/kinput.c +++ b/hw/kdrive/src/kinput.c @@ -445,11 +445,10 @@ KdPointerProc(DeviceIntPtr pDevice, int onoff) } InitPointerDeviceStruct(pDev, pi->map, pi->nButtons, - miPointerGetMotionEvents, + GetMotionHistory, (PtrCtrlProcPtr)NoopDDA, - miPointerGetMotionBufferSize(), pi->nAxes); + GetMotionHistorySize(), pi->nAxes); -#ifdef XINPUT if (pi->inputClass == KD_TOUCHSCREEN) { InitAbsoluteClassDeviceStruct(pDevice); xiclass = AtomFromName(XI_TOUCHSCREEN); @@ -460,7 +459,6 @@ KdPointerProc(DeviceIntPtr pDevice, int onoff) AssignTypeAndName(pi->dixdev, xiclass, pi->name ? pi->name : "Generic KDrive Pointer"); -#endif return Success; diff --git a/hw/vfb/InitInput.c b/hw/vfb/InitInput.c index c0bfb5543..9cb1c02cb 100644 --- a/hw/vfb/InitInput.c +++ b/hw/vfb/InitInput.c @@ -292,8 +292,8 @@ vfbMouseProc(DeviceIntPtr pDevice, int onoff) map[1] = 1; map[2] = 2; map[3] = 3; - InitPointerDeviceStruct(pDev, map, 3, miPointerGetMotionEvents, - (PtrCtrlProcPtr)NoopDDA, miPointerGetMotionBufferSize(), 2); + InitPointerDeviceStruct(pDev, map, 3, GetMotionHistory, + (PtrCtrlProcPtr)NoopDDA, GetMotionHistorySize(), 2); break; case DEVICE_ON: diff --git a/hw/xnest/Pointer.c b/hw/xnest/Pointer.c index b5e45db12..912b6fa21 100644 --- a/hw/xnest/Pointer.c +++ b/hw/xnest/Pointer.c @@ -57,9 +57,9 @@ xnestPointerProc(DeviceIntPtr pDev, int onoff) for (i = 0; i <= nmap; i++) map[i] = i; /* buttons are already mapped */ InitPointerDeviceStruct(&pDev->public, map, nmap, - miPointerGetMotionEvents, + GetMotionHistory, xnestChangePointerControl, - miPointerGetMotionBufferSize(), 2); + GetMotionHistorySize(), 2); break; case DEVICE_ON: xnestEventMask |= XNEST_POINTER_EVENT_MASK;