diff options
| author | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-06-02 11:04:41 +0930 |
|---|---|---|
| committer | Peter Hutterer <peter.hutterer@who-t.net> | 2008-07-17 08:44:39 +0930 |
| commit | 0baf677da6a724c2d8de46530622e1a186fa749e (patch) | |
| tree | 87da4152266de1eaf0a04f2c964147e3b49eba6e | |
| parent | a75cbabc25d67b6e03a0f8e5be82ae5ac3887096 (diff) | |
kdrive: don't post motion event if there was no motion. #16179
Based on the patch by Tomas Janousek. Backported version.
X.Org Bug 16179 <http://bugs.freedesktop.org/show_bug.cgi?id=16179>
(cherry picked from commit 26e7e69ab893d1f2b35213250ada40ec90944f62)
| -rw-r--r-- | hw/kdrive/src/kinput.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c index df73942e7..80fcdde5a 100644 --- a/hw/kdrive/src/kinput.c +++ b/hw/kdrive/src/kinput.c @@ -2078,7 +2078,7 @@ KdEnqueuePointerEvent(KdPointerInfo *pi, unsigned long flags, int rx, int ry, int (*matrix)[3] = kdPointerMatrix.matrix; unsigned long button; int n; - int dixflags; + int dixflags = 0; if (!pi) return; @@ -2109,11 +2109,15 @@ KdEnqueuePointerEvent(KdPointerInfo *pi, unsigned long flags, int rx, int ry, z = rz; if (flags & KD_MOUSE_DELTA) - dixflags = POINTER_RELATIVE & POINTER_ACCELERATE; - else - dixflags = POINTER_ABSOLUTE; + { + if (x || y || z) + dixflags = POINTER_RELATIVE | POINTER_ACCELERATE; + } else if ((pi->dixdev->valuator) && (x != pi->dixdev->valuator->lastx || + y != pi->dixdev->valuator->lasty)) + dixflags = POINTER_ABSOLUTE; - _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags, FALSE); + if (dixflags) + _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags, FALSE); buttons = flags; |
