dix: ensure EventIsDeliverable has inputMasks set at all times.

For proximity events, the XI2 type is 0 and inputMasks never got set in the
preceding condition. As a result, proximity events got never delivered.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-06-02 16:53:41 +10:00
parent ef9f851057
commit fc8cfc3a05

View File

@ -2326,7 +2326,7 @@ EventIsDeliverable(DeviceIntPtr dev, InternalEvent* event, WindowPtr win)
int rc = 0; int rc = 0;
int filter = 0; int filter = 0;
int type; int type;
OtherInputMasks *inputMasks = NULL; OtherInputMasks *inputMasks = wOtherInputMasks(win);
xEvent ev; xEvent ev;
/* XXX: this makes me gag */ /* XXX: this makes me gag */
@ -2335,7 +2335,7 @@ EventIsDeliverable(DeviceIntPtr dev, InternalEvent* event, WindowPtr win)
((xGenericEvent*)&ev)->extension = IReqCode; ((xGenericEvent*)&ev)->extension = IReqCode;
((xGenericEvent*)&ev)->evtype = type; ((xGenericEvent*)&ev)->evtype = type;
filter = GetEventFilter(dev, &ev); filter = GetEventFilter(dev, &ev);
if (type && (inputMasks = wOtherInputMasks(win)) && if (type && inputMasks &&
((inputMasks->xi2mask[XIAllDevices][type/8] & filter) || ((inputMasks->xi2mask[XIAllDevices][type/8] & filter) ||
((inputMasks->xi2mask[XIAllMasterDevices][type/8] & filter) && IsMaster(dev)) || ((inputMasks->xi2mask[XIAllMasterDevices][type/8] & filter) && IsMaster(dev)) ||
(inputMasks->xi2mask[dev->id][type/8] & filter))) (inputMasks->xi2mask[dev->id][type/8] & filter)))