From f793b5fd3eb16a2ada130367c2ffebeede69a322 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 11 Dec 2012 13:36:02 +1000 Subject: [PATCH] dix: don't copy the wrong event mask when activating a passive grab GrabMask is a union of core, XI1 and XI2 masks. If a XI2 grab is activated, the value is a random pointer value, using it as mask has unpredictable effects. Signed-off-by: Peter Hutterer Reviewed-by: Jasper St. Pierre Reviewed-by: Keith Packard --- dix/grabs.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dix/grabs.c b/dix/grabs.c index fe7967415..3b02352df 100644 --- a/dix/grabs.c +++ b/dix/grabs.c @@ -219,7 +219,10 @@ CreateGrab(int client, DeviceIntPtr device, DeviceIntPtr modDevice, grab->resource = FakeClientID(client); grab->device = device; grab->window = window; - grab->eventMask = mask->core; /* same for XI */ + if (grabtype == CORE || grabtype == XI) + grab->eventMask = mask->core; /* same for XI */ + else + grab->eventMask = 0; grab->deviceMask = 0; grab->ownerEvents = param->ownerEvents; grab->keyboardMode = param->this_device_mode;