From daf7dd3bfecc9029bdd10c7a4ea5d2c875a89c41 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 11 Mar 2009 09:01:12 +1000 Subject: [PATCH] dix: Add GetWindowXI2Mask helper --- dix/events.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/dix/events.c b/dix/events.c index 627794197..0b704caee 100644 --- a/dix/events.c +++ b/dix/events.c @@ -423,6 +423,26 @@ GetEventFilter(DeviceIntPtr dev, xEvent *event) return 0; } +/** + * Return the windows complete XI2 mask for the given XI2 event type. + */ +Mask +GetWindowXI2Mask(DeviceIntPtr dev, WindowPtr win, xEvent* ev) +{ + OtherInputMasks *inputMasks = wOtherInputMasks(win); + int filter; + int evtype; + + if (!inputMasks || !XI2_EVENT(ev)) + return 0; + + evtype = ((xGenericEvent*)ev)->evtype; + filter = GetEventFilter(dev, ev); + + return ((inputMasks->xi2mask[dev->id][evtype/8] & filter) || + inputMasks->xi2mask[AllDevices][evtype/8] || + (inputMasks->xi2mask[AllMasterDevices][evtype/8] && dev->isMaster)); +} static CARD8 criticalEvents[32] = {