diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2013-09-04 15:34:28 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2013-10-14 11:07:38 +1000 |
commit | 78944d62ffc7fec6f75b6f514ab7a139ba9bc77b (patch) | |
tree | 098621473d66e7515a5d6645f355250032304cd0 /dix | |
parent | 6159811a1aaf848016dbfa7bde68df097027870c (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>
Diffstat (limited to 'dix')
-rw-r--r-- | dix/events.c | 3 |
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); |