From c59d521f0ce2812c4ef8fee15a5e4d7329ae2ae7 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 2 Jun 2008 11:04:41 +0930 Subject: [PATCH] kdrive: don't post motion event if there was no motion. #16179 Based on the patch by Tomas Janousek. Backported from master to server-1.4. X.Org Bug 16179 (cherry picked from commit 26e7e69ab893d1f2b35213250ada40ec90944f62) --- 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 6c247c1..d53a0d9 100644 --- a/hw/kdrive/src/kinput.c +++ b/hw/kdrive/src/kinput.c @@ -2066,7 +2066,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; @@ -2097,11 +2097,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 ((pi->dixdev->valuator) && (x != pi->dixdev->valuator->lastx || + y != pi->dixdev->valuator->lasty)) + dixflags = POINTER_ABSOLUTE; + + if (dixflags) + _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags, FALSE); buttons = flags; -- 1.5.4.1