From 78944d62ffc7fec6f75b6f514ab7a139ba9bc77b Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 4 Sep 2013 15:34:28 +1000 Subject: [PATCH] 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 --- dix/events.c | 3 +++ 1 file changed, 3 insertions(+) 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);