summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2013-09-04 15:34:28 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2013-10-14 11:07:38 +1000
commit78944d62ffc7fec6f75b6f514ab7a139ba9bc77b (patch)
tree098621473d66e7515a5d6645f355250032304cd0
parent6159811a1aaf848016dbfa7bde68df097027870c (diff)
dix: don't attempt to deliver an event for a different grabtype
For an active grab, grab->eventMask can be either the core or the XI1 mask. With the overlap of event filters, calling DeliverOneGrabbedEvent(XI1) for a ProximityOut event will trigger if the client has selected for enter events - the filter is the same for both. Thus, we end up delivering a proximity event to a client not expecting one. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--dix/events.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/dix/events.c b/dix/events.c
index d63db95e4..452fc3ba6 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -4142,6 +4142,9 @@ DeliverOneGrabbedEvent(InternalEvent *event, DeviceIntPtr dev,
GrabPtr grab = grabinfo->grab;
Mask filter;
+ if (grab->grabtype != level)
+ return 0;
+
switch (level) {
case XI2:
rc = EventToXI2(event, &xE);