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:
parent
ef9f851057
commit
fc8cfc3a05
|
@ -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)))
|
||||||
|
|
Loading…
Reference in New Issue