dix: fix ProcChangePointerControl's wrong inputInfo.pointer usage.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-03-13 14:51:55 +10:00
parent fc5e8dc4a2
commit e31727158c

View File

@ -1937,7 +1937,7 @@ ProcBell(ClientPtr client)
int int
ProcChangePointerControl(ClientPtr client) ProcChangePointerControl(ClientPtr client)
{ {
DeviceIntPtr mouse = PickPointer(client); DeviceIntPtr dev, mouse = PickPointer(client);
PtrCtrl ctrl; /* might get BadValue part way through */ PtrCtrl ctrl; /* might get BadValue part way through */
int rc; int rc;
REQUEST(xChangePointerControlReq); REQUEST(xChangePointerControlReq);
@ -1991,20 +1991,20 @@ ProcChangePointerControl(ClientPtr client)
} }
} }
for (mouse = inputInfo.devices; mouse; mouse = mouse->next) { for (dev = inputInfo.devices; dev; dev = dev->next) {
if ((mouse->coreEvents || mouse == inputInfo.pointer) && if ((dev == mouse || (!dev->isMaster && dev->u.master == mouse)) &&
mouse->ptrfeed && mouse->ptrfeed->CtrlProc) { dev->ptrfeed && dev->ptrfeed->CtrlProc) {
rc = XaceHook(XACE_DEVICE_ACCESS, client, mouse, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;
} }
} }
for (mouse = inputInfo.devices; mouse; mouse = mouse->next) { for (dev = inputInfo.devices; dev; dev = dev->next) {
if ((mouse->coreEvents || mouse == PickPointer(client)) && if ((dev == mouse || (!dev->isMaster && dev->u.master == mouse)) &&
mouse->ptrfeed && mouse->ptrfeed->CtrlProc) { dev->ptrfeed && dev->ptrfeed->CtrlProc) {
mouse->ptrfeed->ctrl = ctrl; dev->ptrfeed->ctrl = ctrl;
(*mouse->ptrfeed->CtrlProc)(mouse, &mouse->ptrfeed->ctrl); (*dev->ptrfeed->CtrlProc)(dev, &mouse->ptrfeed->ctrl);
} }
} }