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