diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-06-02 11:04:41 +0930 |
---|---|---|
committer | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-06-02 11:11:37 +0930 |
commit | 26e7e69ab893d1f2b35213250ada40ec90944f62 (patch) | |
tree | 9f422d7cf1e1648264c4ba25990a5ce228195f74 /hw/kdrive/src/kinput.c | |
parent | ac1db454497ff1839aa7f7ee0649ede112824ed9 (diff) |
kdrive: don't post motion event if there was no motion. #16179
Based on the patch by Tomas Janousek.
X.Org Bug 16179 <http://bugs.freedesktop.org/show_bug.cgi?id=16179>
Diffstat (limited to 'hw/kdrive/src/kinput.c')
-rw-r--r-- | hw/kdrive/src/kinput.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c index 5c686b665..3f81b6562 100644 --- a/hw/kdrive/src/kinput.c +++ b/hw/kdrive/src/kinput.c @@ -2074,7 +2074,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; @@ -2105,11 +2105,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; - - _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags, FALSE); + { + if (x || y || z) + dixflags = POINTER_RELATIVE & POINTER_ACCELERATE; + } else if (x != pi->dixdev->last.valuators[0] || + y != pi->dixdev->last.valuators[1]) + dixflags = POINTER_ABSOLUTE; + + if (dixflags) + _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags, FALSE); buttons = flags; |