summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2011-01-06 11:32:26 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-01-07 08:28:23 +1000
commit4fbadc8b17237f3c7f8c0bf56003d1139c86655e (patch)
tree42268d3e6cce021007e7bd86fe115afe084c2227
parentf3480286aeb3009623d8d4b0202eadda0049552d (diff)
Input: Prevent MD grabs from wandering on to other MDs
The code to set sync.other in DeliverGrabbedEvents is supposed to reset sync.other for a paired MD to the grab under consideration, but was rather optimistic in resetting sync.other for _all_ devices. This would fall apart given two sets of MDs (A paired with B, Y paired with Z), where both MDs were in FREEZE_BOTH_NEXT_EVENT due to being called with SyncBoth, where no event had yet triggered the grab. An event being processed on MD A would result in B, Y and Z all having sync.other set to A's grab, rather than just B. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--dix/events.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/dix/events.c b/dix/events.c
index f280f9d7a..c1cce92d1 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3889,7 +3889,7 @@ DeliverGrabbedEvent(InternalEvent *event, DeviceIntPtr thisDev,
(CLIENT_BITS(grab->resource) ==
CLIENT_BITS(dev->deviceGrab.grab->resource)))
dev->deviceGrab.sync.state = FROZEN_NO_EVENT;
- else
+ else if (GetPairedDevice(thisDev) == dev)
dev->deviceGrab.sync.other = grab;
}
/* fall through */