From 6be355b8e8cabeb5832ce9970a83782ea46fd4d1 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 9 Jan 2009 13:46:20 +1000 Subject: [PATCH] dix: drop x/y back into last.valuators before updating the history (#19285) positionSprite needs to scale to screen coordinates and in the process of doing so alters dev->last.valuators[0:1]. Drop the real coordinates back after finishing and before updating the motion history. This way, we don't push the screen coordinates into the motion history. X.Org Bug 19285 (cherry picked from commit 56efbc0986e782da45addb05ece9f456d41d7a90) --- dix/getevents.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dix/getevents.c b/dix/getevents.c index 707d1da2f..16e23dc20 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -695,6 +695,9 @@ positionSprite(DeviceIntPtr dev, int *x, int *y, dev->valuator->axes + 1, scr->height); } + /* dropy x/y (device coordinates) back into valuators for next event */ + dev->last.valuators[0] = *x; + dev->last.valuators[1] = *y; } /** @@ -980,9 +983,6 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons, positionSprite(pDev, &x, &y, scr, &cx, &cy); updateHistory(pDev, first_valuator, num_valuators, ms); - /* dropy x/y (device coordinates) back into valuators for next event */ - pDev->last.valuators[0] = x; - pDev->last.valuators[1] = y; /* Update the valuators with the true value sent to the client*/ if (num_valuators >= 1 && first_valuator == 0)