ca7f815
From 24e682d0fcc98d7c3f63fa484cc28285df48b499 Mon Sep 17 00:00:00 2001
ca7f815
From: Peter Hutterer <peter.hutterer@who-t.net>
ca7f815
Date: Wed, 25 Mar 2009 13:08:27 +1000
ca7f815
Subject: [PATCH] dix: ignore non-pointer events in XineramaCheckMotion (#20557)
ca7f815
ca7f815
Note that deviceKeyButtonPointer and keyButtonPointer have the same wire
ca7f815
layout, so we only need to check for event types.
ca7f815
ca7f815
X.Org Bug 20557 <http://bugs.freedesktop.org/show_bug.cgi?id=20557>
ca7f815
ca7f815
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
ca7f815
---
ca7f815
 dix/events.c |   17 +++++++++++++++++
ca7f815
 1 files changed, 17 insertions(+), 0 deletions(-)
ca7f815
ca7f815
diff --git a/dix/events.c b/dix/events.c
ca7f815
index 6743cae..63b0674 100644
ca7f815
--- a/dix/events.c
ca7f815
+++ b/dix/events.c
ca7f815
@@ -625,6 +625,23 @@ XineramaCheckMotion(xEvent *xE, DeviceIntPtr pDev)
ca7f815
 
ca7f815
     if (xE && !syncEvents.playingEvents)
ca7f815
     {
ca7f815
+        /* GetPointerEvents() guarantees that pointer events have the correct
ca7f815
+           rootX/Y set already. */
ca7f815
+        switch(xE->u.u.type)
ca7f815
+        {
ca7f815
+            case ButtonPress:
ca7f815
+            case ButtonRelease:
ca7f815
+            case MotionNotify:
ca7f815
+                break;
ca7f815
+            default:
ca7f815
+                if (xE->u.u.type == DeviceButtonPress ||
ca7f815
+                        xE->u.u.type == DeviceButtonRelease ||
ca7f815
+                        xE->u.u.type == DeviceMotionNotify)
ca7f815
+                    break;
ca7f815
+                /* all other events return FALSE */
ca7f815
+                return FALSE;
ca7f815
+        }
ca7f815
+
ca7f815
 	/* Motion events entering DIX get translated to Screen 0
ca7f815
 	   coordinates.  Replayed events have already been
ca7f815
 	   translated since they've entered DIX before */
ca7f815
-- 
ca7f815
1.6.0.6
ca7f815