dix: fix device sync state when calling SyncBoth during AllowEvents.

This did access the wrong device's sync state, potentially freezing or not
thawing the actual device that was supposed to be thawed.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-03-19 20:24:06 +10:00
parent f1c7b95d83
commit 7d4df0ee44

View File

@ -3635,12 +3635,12 @@ DeliverGrabbedEvent(InternalEvent *event, DeviceIntPtr thisDev,
if (dev == thisDev)
continue;
FreezeThaw(dev, TRUE);
if ((grabinfo->sync.state == FREEZE_BOTH_NEXT_EVENT) &&
if ((dev->deviceGrab.sync.state == FREEZE_BOTH_NEXT_EVENT) &&
(CLIENT_BITS(grab->resource) ==
CLIENT_BITS(grab->resource)))
grabinfo->sync.state = FROZEN_NO_EVENT;
CLIENT_BITS(dev->deviceGrab.sync.other->resource)))
dev->deviceGrab.sync.state = FROZEN_NO_EVENT;
else
grabinfo->sync.other = grab;
dev->deviceGrab.sync.other = grab;
}
/* fall through */
case FREEZE_NEXT_EVENT: