Input: rename DeviceIntRec->isMaster to ->type.

isMaster is not enough as long as we differ between master pointers and
keyboard. With flexible device classes, the usual checks for whether a
master device is a pointer (currently check for ->button, ->valuators or
->key) do not work as an SD may post an event through a master and mess this
check up.

Example, a device with valuators but no buttons would remove the button
class from the VCP and thus result in the
IsPointerDevice(inputInfo.pointer) == FALSE.

This will become worse in the future when new device classes are introduced
that aren't provided in the current system (e.g. a switch class).

This patch replaces isMaster with "type", one of SLAVE, MASTER_POINTER and
MASTER_KEYBOARD. All checks for dev->isMaster are replaced with an
IsMaster(dev).
This commit is contained in:
Peter Hutterer 2009-05-20 15:28:16 +10:00
parent add2defac7
commit b12d302df8
23 changed files with 135 additions and 122 deletions

View File

@ -303,7 +303,7 @@ ProcXTestFakeInput(ClientPtr client)
* virtual test device. * virtual test device.
*/ */
for(it = inputInfo.devices; it ; it = it->next ) for(it = inputInfo.devices; it ; it = it->next )
if( !it->isMaster && it->u.master == dev && if( !IsMaster(it) && it->u.master == dev &&
dixLookupPrivate(&it->devPrivates, XTstDevicePrivateKey )) dixLookupPrivate(&it->devPrivates, XTstDevicePrivateKey ))
break; break;
dev= it; dev= it;

View File

@ -243,7 +243,7 @@ ProcXIChangeHierarchy(ClientPtr client)
if (rc != Success) if (rc != Success)
goto unwind; goto unwind;
if (!ptr->isMaster) if (!IsMaster(ptr))
{ {
client->errorValue = r->deviceid; client->errorValue = r->deviceid;
rc = BadDevice; rc = BadDevice;
@ -259,7 +259,7 @@ ProcXIChangeHierarchy(ClientPtr client)
} }
for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next ) for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
if( !xtstdevice->isMaster && xtstdevice->u.master == ptr && if( !IsMaster(xtstdevice) && xtstdevice->u.master == ptr &&
dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey )) dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey ))
break; break;
@ -296,7 +296,7 @@ ProcXIChangeHierarchy(ClientPtr client)
{ {
/* Search the matching keyboard */ /* Search the matching keyboard */
for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next ) for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
if( !xtstdevice->isMaster && if( !IsMaster(xtstdevice) &&
xtstdevice->u.master == keybd && xtstdevice->u.master == keybd &&
IsKeyboardDevice(xtstdevice) && IsKeyboardDevice(xtstdevice) &&
dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey )) dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey ))
@ -315,7 +315,7 @@ ProcXIChangeHierarchy(ClientPtr client)
xtstkeybd = xtstptr; xtstkeybd = xtstptr;
/* Search the matching pointer */ /* Search the matching pointer */
for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next ) for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
if( !xtstdevice->isMaster && if( !IsMaster(xtstdevice) &&
xtstdevice->u.master == ptr && xtstdevice->u.master == ptr &&
IsPointerDevice(xtstdevice) && IsPointerDevice(xtstdevice) &&
dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey ) dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey )
@ -343,7 +343,7 @@ ProcXIChangeHierarchy(ClientPtr client)
if (rc != Success) if (rc != Success)
goto unwind; goto unwind;
if (!newptr->isMaster) if (!IsMaster(newptr))
{ {
client->errorValue = r->return_pointer; client->errorValue = r->return_pointer;
rc = BadDevice; rc = BadDevice;
@ -355,7 +355,7 @@ ProcXIChangeHierarchy(ClientPtr client)
if (rc != Success) if (rc != Success)
goto unwind; goto unwind;
if (!newkeybd->isMaster) if (!IsMaster(newkeybd))
{ {
client->errorValue = r->return_keyboard; client->errorValue = r->return_keyboard;
rc = BadDevice; rc = BadDevice;
@ -366,7 +366,7 @@ ProcXIChangeHierarchy(ClientPtr client)
attached; attached;
attached = attached->next) attached = attached->next)
{ {
if (!attached->isMaster) { if (!IsMaster(attached)) {
if (attached->u.master == ptr) if (attached->u.master == ptr)
{ {
AttachDevice(client, attached, newptr); AttachDevice(client, attached, newptr);
@ -418,7 +418,7 @@ ProcXIChangeHierarchy(ClientPtr client)
if (rc != Success) if (rc != Success)
goto unwind; goto unwind;
if (ptr->isMaster) if (IsMaster(ptr))
{ {
client->errorValue = c->deviceid; client->errorValue = c->deviceid;
rc = BadDevice; rc = BadDevice;
@ -451,7 +451,7 @@ ProcXIChangeHierarchy(ClientPtr client)
if (rc != Success) if (rc != Success)
goto unwind; goto unwind;
if (ptr->isMaster) if (IsMaster(ptr))
{ {
client->errorValue = c->deviceid; client->errorValue = c->deviceid;
rc = BadDevice; rc = BadDevice;
@ -473,7 +473,7 @@ ProcXIChangeHierarchy(ClientPtr client)
client, DixWriteAccess); client, DixWriteAccess);
if (rc != Success) if (rc != Success)
goto unwind; goto unwind;
if (!newmaster->isMaster) if (!IsMaster(newmaster))
{ {
client->errorValue = c->new_master; client->errorValue = c->new_master;
rc = BadDevice; rc = BadDevice;

View File

@ -721,7 +721,7 @@ ChangeMasterDeviceClasses(DeviceIntPtr device, DeviceChangedEvent *dce)
{ {
DeviceIntPtr master = device->u.master; DeviceIntPtr master = device->u.master;
if (device->isMaster) if (IsMaster(device))
return; return;
if (!master) /* if device was set floating between SIGIO and now */ if (!master) /* if device was set floating between SIGIO and now */
@ -866,7 +866,7 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event)
kptr = &b->down[key>>3]; kptr = &b->down[key>>3];
if (!(*kptr & bit)) if (!(*kptr & bit))
return DONT_PROCESS; return DONT_PROCESS;
if (device->isMaster) { if (IsMaster(device)) {
DeviceIntPtr sd; DeviceIntPtr sd;
/* /*
@ -875,7 +875,7 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event)
* event being delivered through the slave first * event being delivered through the slave first
*/ */
for (sd = inputInfo.devices; sd; sd = sd->next) { for (sd = inputInfo.devices; sd; sd = sd->next) {
if (sd->isMaster || sd->u.master != device) if (IsMaster(sd) || sd->u.master != device)
continue; continue;
if (!sd->button) if (!sd->button)
continue; continue;
@ -1007,7 +1007,7 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
b = device->button; b = device->button;
k = device->key; k = device->key;
if (device->isMaster || !device->u.master) if (IsMaster(device) || !device->u.master)
CheckMotion(event, device); CheckMotion(event, device);
switch (event->type) switch (event->type)
@ -1201,7 +1201,7 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
DeviceIntPtr mouse; DeviceIntPtr mouse;
int btlen, len, i; int btlen, len, i;
mouse = (dev->isMaster || dev->u.master) ? GetPairedDevice(dev) : NULL; mouse = (IsMaster(dev) || dev->u.master) ? GetPairedDevice(dev) : NULL;
/* XI 2 event */ /* XI 2 event */
btlen = (mouse->button) ? (mouse->button->numButtons + 7)/8 : 0; btlen = (mouse->button) ? (mouse->button->numButtons + 7)/8 : 0;

View File

@ -177,9 +177,9 @@ CopySwapDevice(ClientPtr client, DeviceIntPtr d, int num_classes,
dev->id = d->id; dev->id = d->id;
dev->type = d->xinput_type; dev->type = d->xinput_type;
dev->num_classes = num_classes; dev->num_classes = num_classes;
if (d->isMaster && IsKeyboardDevice(d)) if (IsMaster(d) && IsKeyboardDevice(d))
dev->use = IsXKeyboard; dev->use = IsXKeyboard;
else if (d->isMaster && IsPointerDevice(d)) else if (IsMaster(d) && IsPointerDevice(d))
dev->use = IsXPointer; dev->use = IsXPointer;
else if (d->key && d->kbdfeed) else if (d->key && d->kbdfeed)
dev->use = IsXExtensionKeyboard; dev->use = IsXExtensionKeyboard;
@ -344,7 +344,7 @@ ProcXListInputDevices(ClientPtr client)
AddOtherInputDevices(); AddOtherInputDevices();
for (d = inputInfo.devices; d; d = d->next) { for (d = inputInfo.devices; d; d = d->next) {
if (d->isMaster && if (IsMaster(d) &&
d != inputInfo.pointer && d != inputInfo.pointer &&
d != inputInfo.keyboard) d != inputInfo.keyboard)
continue; /* don't send master devices other than VCP/VCK */ continue; /* don't send master devices other than VCP/VCK */
@ -357,7 +357,7 @@ ProcXListInputDevices(ClientPtr client)
} }
for (d = inputInfo.off_devices; d; d = d->next) { for (d = inputInfo.off_devices; d; d = d->next) {
if (d->isMaster && if (IsMaster(d) &&
d != inputInfo.pointer && d != inputInfo.pointer &&
d != inputInfo.keyboard) d != inputInfo.keyboard)
continue; /* don't send master devices other than VCP/VCK */ continue; /* don't send master devices other than VCP/VCK */
@ -378,7 +378,7 @@ ProcXListInputDevices(ClientPtr client)
dev = (xDeviceInfoPtr) devbuf; dev = (xDeviceInfoPtr) devbuf;
for (d = inputInfo.devices; d; d = d->next) for (d = inputInfo.devices; d; d = d->next)
{ {
if (d->isMaster && if (IsMaster(d) &&
d != inputInfo.pointer && d != inputInfo.pointer &&
d != inputInfo.keyboard) d != inputInfo.keyboard)
continue; /* don't count master devices other than VCP/VCK */ continue; /* don't count master devices other than VCP/VCK */
@ -388,7 +388,7 @@ ProcXListInputDevices(ClientPtr client)
for (d = inputInfo.off_devices; d; d = d->next) for (d = inputInfo.off_devices; d; d = d->next)
{ {
if (d->isMaster && if (IsMaster(d) &&
d != inputInfo.pointer && d != inputInfo.pointer &&
d != inputInfo.keyboard) d != inputInfo.keyboard)
continue; /* don't count master devices other than VCP/VCK */ continue; /* don't count master devices other than VCP/VCK */

View File

@ -112,7 +112,7 @@ ProcXOpenDevice(ClientPtr client)
} else if (status != Success) } else if (status != Success)
return status; return status;
if (dev->isMaster) if (IsMaster(dev))
return BadDevice; return BadDevice;
OpenInputDevice(dev, client, &status); OpenInputDevice(dev, client, &status);

View File

@ -88,14 +88,14 @@ ProcXIQueryDevice(ClientPtr client)
for (dev = inputInfo.devices; dev; dev = dev->next) for (dev = inputInfo.devices; dev; dev = dev->next)
{ {
if (stuff->deviceid == XIAllDevices || if (stuff->deviceid == XIAllDevices ||
(stuff->deviceid == XIAllMasterDevices && dev->isMaster)) (stuff->deviceid == XIAllMasterDevices && IsMaster(dev)))
len += SizeDeviceInfo(dev); len += SizeDeviceInfo(dev);
} }
for (dev = inputInfo.off_devices; dev; dev = dev->next) for (dev = inputInfo.off_devices; dev; dev = dev->next)
{ {
if (stuff->deviceid == XIAllDevices || if (stuff->deviceid == XIAllDevices ||
(stuff->deviceid == XIAllMasterDevices && dev->isMaster)) (stuff->deviceid == XIAllMasterDevices && IsMaster(dev)))
len += SizeDeviceInfo(dev); len += SizeDeviceInfo(dev);
} }
@ -126,7 +126,7 @@ ProcXIQueryDevice(ClientPtr client)
for (dev = inputInfo.devices; dev; dev = dev->next) for (dev = inputInfo.devices; dev; dev = dev->next)
{ {
if (stuff->deviceid == XIAllDevices || if (stuff->deviceid == XIAllDevices ||
(stuff->deviceid == XIAllMasterDevices && dev->isMaster)) (stuff->deviceid == XIAllMasterDevices && IsMaster(dev)))
{ {
len = ListDeviceInfo(dev, (xXIDeviceInfo*)info); len = ListDeviceInfo(dev, (xXIDeviceInfo*)info);
if (client->swapped) if (client->swapped)
@ -139,7 +139,7 @@ ProcXIQueryDevice(ClientPtr client)
for (dev = inputInfo.off_devices; dev; dev = dev->next) for (dev = inputInfo.off_devices; dev; dev = dev->next)
{ {
if (stuff->deviceid == XIAllDevices || if (stuff->deviceid == XIAllDevices ||
(stuff->deviceid == XIAllMasterDevices && dev->isMaster)) (stuff->deviceid == XIAllMasterDevices && IsMaster(dev)))
{ {
len = ListDeviceInfo(dev, (xXIDeviceInfo*)info); len = ListDeviceInfo(dev, (xXIDeviceInfo*)info);
if (client->swapped) if (client->swapped)
@ -326,7 +326,7 @@ int GetDeviceUse(DeviceIntPtr dev, uint16_t *attachment)
DeviceIntPtr master = dev->u.master; DeviceIntPtr master = dev->u.master;
int use; int use;
if (dev->isMaster) if (IsMaster(dev))
{ {
DeviceIntPtr paired = GetPairedDevice(dev); DeviceIntPtr paired = GetPairedDevice(dev);
use = IsPointerDevice(dev) ? XIMasterPointer : XIMasterKeyboard; use = IsPointerDevice(dev) ? XIMasterPointer : XIMasterKeyboard;

View File

@ -74,7 +74,7 @@ ProcXISetClientPointer(ClientPtr client)
if (rc != Success) if (rc != Success)
return rc; return rc;
if (!IsPointerDevice(pDev) || !pDev->isMaster) if (!IsPointerDevice(pDev) || !IsMaster(pDev))
{ {
client->errorValue = stuff->deviceid; client->errorValue = stuff->deviceid;
return BadDevice; return BadDevice;

View File

@ -82,15 +82,15 @@ ProcXIAllowEvents(ClientPtr client)
AllowSome(client, time, dev, THAWED); AllowSome(client, time, dev, THAWED);
break; break;
case XIAsyncPairedDevice: case XIAsyncPairedDevice:
if (dev->isMaster) if (IsMaster(dev))
AllowSome(client, time, dev, THAW_OTHERS); AllowSome(client, time, dev, THAW_OTHERS);
break; break;
case XISyncPair: case XISyncPair:
if (dev->isMaster) if (IsMaster(dev))
AllowSome(client, time, dev, FREEZE_BOTH_NEXT_EVENT); AllowSome(client, time, dev, FREEZE_BOTH_NEXT_EVENT);
break; break;
case XIAsyncPair: case XIAsyncPair:
if (dev->isMaster) if (IsMaster(dev))
AllowSome(client, time, dev, THAWED_BOTH); AllowSome(client, time, dev, THAWED_BOTH);
break; break;
default: default:

View File

@ -74,7 +74,7 @@ ProcXIGrabDevice(ClientPtr client)
if (ret != Success) if (ret != Success)
return ret; return ret;
if (!dev->isMaster) if (!IsMaster(dev))
stuff->paired_device_mode = GrabModeAsync; stuff->paired_device_mode = GrabModeAsync;
memset(mask.xi2mask, 0, sizeof(mask.xi2mask)); memset(mask.xi2mask, 0, sizeof(mask.xi2mask));

View File

@ -102,7 +102,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
} }
/* Can't grab for modifiers on an attached slave device */ /* Can't grab for modifiers on an attached slave device */
if (!dev->isMaster) if (!IsMaster(dev))
{ {
if (!dev->u.master) if (!dev->u.master)
stuff->paired_device_mode = GrabModeAsync; stuff->paired_device_mode = GrabModeAsync;
@ -157,7 +157,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
if (!modifiers_failed) if (!modifiers_failed)
return BadAlloc; return BadAlloc;
if (IsPointerDevice(dev) && dev->isMaster) if (IsPointerDevice(dev) && IsMaster(dev))
mod_dev = GetPairedDevice(dev); mod_dev = GetPairedDevice(dev);
else else
mod_dev = dev; mod_dev = dev;
@ -261,7 +261,7 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
if (rc != Success) if (rc != Success)
return rc; return rc;
if (dev->isMaster) if (IsMaster(dev))
mod_dev = GetPairedDevice(dev); mod_dev = GetPairedDevice(dev);
else else
mod_dev = dev; mod_dev = dev;

View File

@ -152,7 +152,7 @@ PairDevices(ClientPtr client, DeviceIntPtr ptr, DeviceIntPtr kbd)
return BadDevice; return BadDevice;
/* Don't allow pairing for slave devices */ /* Don't allow pairing for slave devices */
if (!ptr->isMaster || !kbd->isMaster) if (!IsMaster(ptr) || !IsMaster(kbd))
return BadDevice; return BadDevice;
if (ptr->spriteInfo->paired) if (ptr->spriteInfo->paired)
@ -180,7 +180,7 @@ NextFreePointerDevice(void)
{ {
DeviceIntPtr dev; DeviceIntPtr dev;
for (dev = inputInfo.devices; dev; dev = dev->next) for (dev = inputInfo.devices; dev; dev = dev->next)
if (dev->isMaster && if (IsMaster(dev) &&
dev->spriteInfo->spriteOwner && dev->spriteInfo->spriteOwner &&
!dev->spriteInfo->paired) !dev->spriteInfo->paired)
return dev; return dev;
@ -306,7 +306,7 @@ EnableDevice(DeviceIntPtr dev, BOOL sendevent)
if (!dev->spriteInfo->sprite) if (!dev->spriteInfo->sprite)
{ {
if (dev->isMaster) if (IsMaster(dev))
{ {
/* Sprites appear on first root window, so we can hardcode it */ /* Sprites appear on first root window, so we can hardcode it */
if (dev->spriteInfo->spriteOwner) if (dev->spriteInfo->spriteOwner)
@ -398,7 +398,7 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent)
return FALSE; return FALSE;
/* float attached devices */ /* float attached devices */
if (dev->isMaster) if (IsMaster(dev))
{ {
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
@ -413,12 +413,12 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent)
{ {
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if (other->isMaster && other->u.lastSlave == dev) if (IsMaster(other) && other->u.lastSlave == dev)
other->u.lastSlave = NULL; other->u.lastSlave = NULL;
} }
} }
if (dev->isMaster && dev->spriteInfo->sprite) if (IsMaster(dev) && dev->spriteInfo->sprite)
{ {
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
@ -488,7 +488,7 @@ ActivateDevice(DeviceIntPtr dev, BOOL sendevent)
return ret; return ret;
/* Initialize memory for sprites. */ /* Initialize memory for sprites. */
if (dev->isMaster && dev->spriteInfo->spriteOwner) if (IsMaster(dev) && dev->spriteInfo->spriteOwner)
pScreen->DeviceCursorInitialize(dev, pScreen); pScreen->DeviceCursorInitialize(dev, pScreen);
SendDevicePresenceEvent(dev->id, DeviceAdded); SendDevicePresenceEvent(dev->id, DeviceAdded);
@ -847,7 +847,7 @@ CloseDevice(DeviceIntPtr dev)
(void)(*dev->deviceProc)(dev, DEVICE_CLOSE); (void)(*dev->deviceProc)(dev, DEVICE_CLOSE);
/* free sprite memory */ /* free sprite memory */
if (dev->isMaster && dev->spriteInfo->sprite) if (IsMaster(dev) && dev->spriteInfo->sprite)
screen->DeviceCursorCleanup(dev, screen); screen->DeviceCursorCleanup(dev, screen);
/* free acceleration info */ /* free acceleration info */
@ -859,7 +859,7 @@ CloseDevice(DeviceIntPtr dev)
classes = (ClassesPtr)&dev->key; classes = (ClassesPtr)&dev->key;
FreeAllDeviceClasses(classes); FreeAllDeviceClasses(classes);
if (dev->isMaster) if (IsMaster(dev))
{ {
classes = dixLookupPrivate(&dev->devPrivates, UnusedClassesPrivateKey); classes = dixLookupPrivate(&dev->devPrivates, UnusedClassesPrivateKey);
FreeAllDeviceClasses(classes); FreeAllDeviceClasses(classes);
@ -904,7 +904,7 @@ CloseDownDevices(void)
*/ */
for (dev = inputInfo.devices; dev; dev = dev->next) for (dev = inputInfo.devices; dev; dev = dev->next)
{ {
if (!dev->isMaster && dev->u.master) if (!IsMaster(dev) && dev->u.master)
dev->u.master = NULL; dev->u.master = NULL;
} }
@ -990,7 +990,7 @@ RemoveDevice(DeviceIntPtr dev, BOOL sendevent)
else else
prev->next = next; prev->next = next;
flags[tmp->id] = (tmp->isMaster) ? XIMasterRemoved : XISlaveRemoved; flags[tmp->id] = IsMaster(tmp) ? XIMasterRemoved : XISlaveRemoved;
CloseDevice(tmp); CloseDevice(tmp);
ret = Success; ret = Success;
} }
@ -1000,7 +1000,7 @@ RemoveDevice(DeviceIntPtr dev, BOOL sendevent)
for (tmp = inputInfo.off_devices; tmp; (prev = tmp), (tmp = next)) { for (tmp = inputInfo.off_devices; tmp; (prev = tmp), (tmp = next)) {
next = tmp->next; next = tmp->next;
if (tmp == dev) { if (tmp == dev) {
flags[tmp->id] = (tmp->isMaster) ? XIMasterRemoved : XISlaveRemoved; flags[tmp->id] = IsMaster(tmp) ? XIMasterRemoved : XISlaveRemoved;
CloseDevice(tmp); CloseDevice(tmp);
if (prev == NULL) if (prev == NULL)
@ -1194,7 +1194,7 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes,
} }
dev->last.numValuators = numAxes; dev->last.numValuators = numAxes;
if(dev->isMaster) /* master devs do not accelerate */ if(IsMaster(dev)) /* master devs do not accelerate */
InitPointerAccelerationScheme(dev, PtrAccelNoOp); InitPointerAccelerationScheme(dev, PtrAccelNoOp);
else else
InitPointerAccelerationScheme(dev, PtrAccelDefault); InitPointerAccelerationScheme(dev, PtrAccelDefault);
@ -1226,7 +1226,7 @@ InitPointerAccelerationScheme(DeviceIntPtr dev,
if(!val) if(!val)
return FALSE; return FALSE;
if(dev->isMaster && (scheme != PtrAccelNoOp)) if(IsMaster(dev) && (scheme != PtrAccelNoOp))
scheme = PtrAccelNoOp; /* no accel for master devices */ scheme = PtrAccelNoOp; /* no accel for master devices */
for(x = 0; pointerAccelerationScheme[x].number >= 0; x++) { for(x = 0; pointerAccelerationScheme[x].number >= 0; x++) {
@ -1587,7 +1587,7 @@ ProcChangeKeyboardMapping(ClientPtr client)
stuff->keyCodes, NULL, client); stuff->keyCodes, NULL, client);
for (tmp = inputInfo.devices; tmp; tmp = tmp->next) { for (tmp = inputInfo.devices; tmp; tmp = tmp->next) {
if (tmp->isMaster || tmp->u.master != pDev) if (IsMaster(tmp) || tmp->u.master != pDev)
continue; continue;
if (!tmp->key) if (!tmp->key)
continue; continue;
@ -1932,7 +1932,7 @@ ProcChangeKeyboardControl (ClientPtr client)
keyboard = PickKeyboard(client); keyboard = PickKeyboard(client);
for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
if ((pDev == keyboard || (!pDev->isMaster && pDev->u.master == keyboard)) && if ((pDev == keyboard || (!IsMaster(keyboard) && pDev->u.master == keyboard)) &&
pDev->kbdfeed && pDev->kbdfeed->CtrlProc) { pDev->kbdfeed && pDev->kbdfeed->CtrlProc) {
ret = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixManageAccess); ret = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixManageAccess);
if (ret != Success) if (ret != Success)
@ -1941,7 +1941,7 @@ ProcChangeKeyboardControl (ClientPtr client)
} }
for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
if ((pDev == keyboard || (!pDev->isMaster && pDev->u.master == keyboard)) && if ((pDev == keyboard || (!IsMaster(keyboard) && pDev->u.master == keyboard)) &&
pDev->kbdfeed && pDev->kbdfeed->CtrlProc) { pDev->kbdfeed && pDev->kbdfeed->CtrlProc) {
ret = DoChangeKeyboardControl(client, pDev, vlist, vmask); ret = DoChangeKeyboardControl(client, pDev, vlist, vmask);
if (ret != Success) if (ret != Success)
@ -2010,7 +2010,7 @@ ProcBell(ClientPtr client)
newpercent = base - newpercent + stuff->percent; newpercent = base - newpercent + stuff->percent;
for (dev = inputInfo.devices; dev; dev = dev->next) { for (dev = inputInfo.devices; dev; dev = dev->next) {
if ((dev == keybd || (!dev->isMaster && dev->u.master == keybd)) && if ((dev == keybd || (!IsMaster(dev) && dev->u.master == keybd)) &&
dev->kbdfeed && dev->kbdfeed->BellProc) { dev->kbdfeed && dev->kbdfeed->BellProc) {
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixBellAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixBellAccess);
@ -2082,7 +2082,7 @@ ProcChangePointerControl(ClientPtr client)
} }
for (dev = inputInfo.devices; dev; dev = dev->next) { for (dev = inputInfo.devices; dev; dev = dev->next) {
if ((dev == mouse || (!dev->isMaster && dev->u.master == mouse)) && if ((dev == mouse || (!IsMaster(dev) && dev->u.master == mouse)) &&
dev->ptrfeed && dev->ptrfeed->CtrlProc) { dev->ptrfeed && dev->ptrfeed->CtrlProc) {
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess);
if (rc != Success) if (rc != Success)
@ -2091,7 +2091,7 @@ ProcChangePointerControl(ClientPtr client)
} }
for (dev = inputInfo.devices; dev; dev = dev->next) { for (dev = inputInfo.devices; dev; dev = dev->next) {
if ((dev == mouse || (!dev->isMaster && dev->u.master == mouse)) && if ((dev == mouse || (!IsMaster(dev) && dev->u.master == mouse)) &&
dev->ptrfeed && dev->ptrfeed->CtrlProc) { dev->ptrfeed && dev->ptrfeed->CtrlProc) {
dev->ptrfeed->ctrl = ctrl; dev->ptrfeed->ctrl = ctrl;
(*dev->ptrfeed->CtrlProc)(dev, &mouse->ptrfeed->ctrl); (*dev->ptrfeed->CtrlProc)(dev, &mouse->ptrfeed->ctrl);
@ -2246,10 +2246,10 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
{ {
ScreenPtr screen; ScreenPtr screen;
DeviceIntPtr oldmaster; DeviceIntPtr oldmaster;
if (!dev || dev->isMaster) if (!dev || IsMaster(dev))
return BadDevice; return BadDevice;
if (master && !master->isMaster) /* can't attach to slaves */ if (master && !IsMaster(master)) /* can't attach to slaves */
return BadDevice; return BadDevice;
/* set from floating to floating? */ /* set from floating to floating? */
@ -2310,7 +2310,7 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
{ {
DeviceIntPtr it; DeviceIntPtr it;
for (it = inputInfo.devices; it; it = it->next) for (it = inputInfo.devices; it; it = it->next)
if (!it->isMaster && it->u.master == oldmaster) if (!IsMaster(it) && it->u.master == oldmaster)
break; break;
if (!it) /* no dev is paired with old master */ if (!it) /* no dev is paired with old master */
@ -2338,7 +2338,7 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
DeviceIntPtr DeviceIntPtr
GetPairedDevice(DeviceIntPtr dev) GetPairedDevice(DeviceIntPtr dev)
{ {
if (!dev->isMaster && dev->u.master) if (!IsMaster(dev) && dev->u.master)
dev = dev->u.master; dev = dev->u.master;
return dev->spriteInfo->paired; return dev->spriteInfo->paired;
@ -2380,7 +2380,7 @@ AllocDevicePair (ClientPtr client, char* name,
pointer->u.lastSlave = NULL; pointer->u.lastSlave = NULL;
pointer->last.slave = NULL; pointer->last.slave = NULL;
pointer->isMaster = master; pointer->type = (master) ? MASTER_POINTER : SLAVE;
keyboard = AddInputDevice(client, CoreKeyboardProc, TRUE); keyboard = AddInputDevice(client, CoreKeyboardProc, TRUE);
if (!keyboard) if (!keyboard)
@ -2403,7 +2403,7 @@ AllocDevicePair (ClientPtr client, char* name,
keyboard->u.lastSlave = NULL; keyboard->u.lastSlave = NULL;
keyboard->last.slave = NULL; keyboard->last.slave = NULL;
keyboard->isMaster = master; keyboard->type = (master) ? MASTER_KEYBOARD : SLAVE;
/* The ClassesRec stores the device classes currently not used. */ /* The ClassesRec stores the device classes currently not used. */

View File

@ -546,7 +546,7 @@ CoreEnterLeaveEvents(DeviceIntPtr dev,
WindowPtr to, WindowPtr to,
int mode) int mode)
{ {
if (!dev->isMaster) if (!IsMaster(dev))
return; return;
LeaveWindow(dev, from, mode); LeaveWindow(dev, from, mode);
@ -1216,7 +1216,7 @@ CoreFocusEvents(DeviceIntPtr dev,
WindowPtr to, WindowPtr to,
int mode) int mode)
{ {
if (!dev->isMaster) if (!IsMaster(dev))
return; return;
SetFocusOut(dev, from); SetFocusOut(dev, from);

View File

@ -329,7 +329,7 @@ DevHasCursor(DeviceIntPtr pDev)
Bool Bool
IsPointerDevice(DeviceIntPtr dev) IsPointerDevice(DeviceIntPtr dev)
{ {
return (dev->valuator && dev->button); return (dev->type == MASTER_POINTER) || (dev->valuator && dev->button);
} }
/* /*
@ -342,7 +342,14 @@ IsPointerDevice(DeviceIntPtr dev)
Bool Bool
IsKeyboardDevice(DeviceIntPtr dev) IsKeyboardDevice(DeviceIntPtr dev)
{ {
return (dev->key && dev->kbdfeed) && !IsPointerDevice(dev); return (dev->type == MASTER_KEYBOARD) ||
((dev->key && dev->kbdfeed) && !IsPointerDevice(dev));
}
Bool
IsMaster(DeviceIntPtr dev)
{
return (dev->type == MASTER_POINTER || dev->type == MASTER_KEYBOARD);
} }
static WindowPtr XYToWindow( static WindowPtr XYToWindow(
@ -455,7 +462,7 @@ GetWindowXI2Mask(DeviceIntPtr dev, WindowPtr win, xEvent* ev)
return ((inputMasks->xi2mask[dev->id][evtype/8] & filter) || return ((inputMasks->xi2mask[dev->id][evtype/8] & filter) ||
inputMasks->xi2mask[XIAllDevices][evtype/8] || inputMasks->xi2mask[XIAllDevices][evtype/8] ||
(inputMasks->xi2mask[XIAllMasterDevices][evtype/8] && dev->isMaster)); (inputMasks->xi2mask[XIAllMasterDevices][evtype/8] && IsMaster(dev)));
} }
static Mask static Mask
@ -467,7 +474,7 @@ GetEventMask(DeviceIntPtr dev, xEvent *event, InputClients* other)
int byte = ((xGenericEvent*)event)->evtype / 8; int byte = ((xGenericEvent*)event)->evtype / 8;
return (other->xi2mask[dev->id][byte] | return (other->xi2mask[dev->id][byte] |
other->xi2mask[XIAllDevices][byte] | other->xi2mask[XIAllDevices][byte] |
(dev->isMaster? other->xi2mask[XIAllMasterDevices][byte] : 0)); (IsMaster(dev)? other->xi2mask[XIAllMasterDevices][byte] : 0));
} else if (CORE_EVENT(event)) } else if (CORE_EVENT(event))
return other->mask[XIAllDevices]; return other->mask[XIAllDevices];
else else
@ -1404,7 +1411,7 @@ CheckGrabForSyncs(DeviceIntPtr thisDev, Bool thisMode, Bool otherMode)
The correct thing to do would be to freeze all SDs attached to the The correct thing to do would be to freeze all SDs attached to the
paired master device. paired master device.
*/ */
if (thisDev->isMaster) if (IsMaster(thisDev))
{ {
dev = GetPairedDevice(thisDev); dev = GetPairedDevice(thisDev);
if (otherMode == GrabModeSync) if (otherMode == GrabModeSync)
@ -1453,7 +1460,7 @@ RestoreOldMaster(DeviceIntPtr dev)
{ {
GrabMemoryPtr gm; GrabMemoryPtr gm;
if (dev->isMaster) if (IsMaster(dev))
return; return;
gm = (GrabMemoryPtr)dixLookupPrivate(&dev->devPrivates, GrabPrivateKey); gm = (GrabMemoryPtr)dixLookupPrivate(&dev->devPrivates, GrabPrivateKey);
@ -1491,7 +1498,7 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab,
Bool isPassive = autoGrab & ~ImplicitGrabMask; Bool isPassive = autoGrab & ~ImplicitGrabMask;
/* slave devices need to float for the duration of the grab. */ /* slave devices need to float for the duration of the grab. */
if (!isPassive && !mouse->isMaster) if (!isPassive && !IsMaster(mouse))
{ {
SaveOldMaster(mouse); SaveOldMaster(mouse);
AttachDevice(NULL, mouse, NULL); AttachDevice(NULL, mouse, NULL);
@ -1569,7 +1576,7 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, Bool pass
WindowPtr oldWin; WindowPtr oldWin;
/* slave devices need to float for the duration of the grab. */ /* slave devices need to float for the duration of the grab. */
if (!passive && !keybd->isMaster) if (!passive && !IsMaster(keybd))
{ {
SaveOldMaster(keybd); SaveOldMaster(keybd);
AttachDevice(NULL, keybd, NULL); AttachDevice(NULL, keybd, NULL);
@ -2311,7 +2318,7 @@ EventIsDeliverable(DeviceIntPtr dev, InternalEvent* event, WindowPtr win)
filter = GetEventFilter(dev, &ev); filter = GetEventFilter(dev, &ev);
if (type && (inputMasks = wOtherInputMasks(win)) && if (type && (inputMasks = wOtherInputMasks(win)) &&
((inputMasks->xi2mask[XIAllDevices][type/8] & filter) || ((inputMasks->xi2mask[XIAllDevices][type/8] & filter) ||
((inputMasks->xi2mask[XIAllMasterDevices][type/8] & filter) && dev->isMaster) || ((inputMasks->xi2mask[XIAllMasterDevices][type/8] & filter) && IsMaster(dev)) ||
(inputMasks->xi2mask[dev->id][type/8] & filter))) (inputMasks->xi2mask[dev->id][type/8] & filter)))
rc |= XI2_MASK; rc |= XI2_MASK;
@ -2430,7 +2437,7 @@ DeliverDeviceEvents(WindowPtr pWin, InternalEvent *event, GrabPtr grab,
} }
/* Core event */ /* Core event */
if ((mask & CORE_MASK) && dev->isMaster && dev->coreEvents) if ((mask & CORE_MASK) && IsMaster(dev) && dev->coreEvents)
{ {
rc = EventToCore(event, &core); rc = EventToCore(event, &core);
if (rc != Success) if (rc != Success)
@ -3160,7 +3167,7 @@ ProcWarpPointer(ClientPtr client)
dev = PickPointer(client); dev = PickPointer(client);
for (tmp = inputInfo.devices; tmp; tmp = tmp->next) { for (tmp = inputInfo.devices; tmp; tmp = tmp->next) {
if ((tmp == dev) || (!tmp->isMaster && tmp->u.master == dev)) { if ((tmp == dev) || (!IsMaster(tmp) && tmp->u.master == dev)) {
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixWriteAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixWriteAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;
@ -3492,7 +3499,7 @@ CheckDeviceGrabs(DeviceIntPtr device, DeviceEvent *event, int checkFirst)
int i; int i;
WindowPtr pWin = NULL; WindowPtr pWin = NULL;
FocusClassPtr focus = IsPointerEvent((InternalEvent*)event) ? NULL : device->focus; FocusClassPtr focus = IsPointerEvent((InternalEvent*)event) ? NULL : device->focus;
BOOL sendCore = (device->isMaster && device->coreEvents); BOOL sendCore = (IsMaster(device) && device->coreEvents);
if (event->type != ET_ButtonPress && if (event->type != ET_ButtonPress &&
event->type != ET_KeyPress) event->type != ET_KeyPress)
@ -3548,7 +3555,7 @@ DeliverFocusedEvent(DeviceIntPtr keybd, InternalEvent *event, WindowPtr window)
{ {
DeviceIntPtr ptr; DeviceIntPtr ptr;
WindowPtr focus = keybd->focus->win; WindowPtr focus = keybd->focus->win;
BOOL sendCore = (keybd->isMaster && keybd->coreEvents); BOOL sendCore = (IsMaster(keybd) && keybd->coreEvents);
xEvent core; xEvent core;
xEvent *xE = NULL, *xi2 = NULL; xEvent *xE = NULL, *xi2 = NULL;
int count, rc; int count, rc;
@ -3714,7 +3721,7 @@ DeliverGrabbedEvent(InternalEvent *event, DeviceIntPtr thisDev,
mask = grab->eventMask; mask = grab->eventMask;
sendCore = (thisDev->isMaster && thisDev->coreEvents); sendCore = (IsMaster(thisDev) && thisDev->coreEvents);
/* try core event */ /* try core event */
if (sendCore && grab->grabtype == GRABTYPE_CORE) if (sendCore && grab->grabtype == GRABTYPE_CORE)
{ {
@ -4201,7 +4208,7 @@ DeviceEnterLeaveEvent(
if (BitIsOn(mouse->button->down, i)) if (BitIsOn(mouse->button->down, i))
SetBit(&event[1], i); SetBit(&event[1], i);
kbd = (mouse->isMaster || mouse->u.master) ? GetPairedDevice(mouse) : NULL; kbd = (IsMaster(mouse) || mouse->u.master) ? GetPairedDevice(mouse) : NULL;
if (kbd && kbd->key) if (kbd && kbd->key)
{ {
event->mods.base_mods = kbd->key->xkbInfo->state.base_mods; event->mods.base_mods = kbd->key->xkbInfo->state.base_mods;
@ -5583,7 +5590,7 @@ WriteEventsToClient(ClientPtr pClient, int count, xEvent *events)
Bool Bool
SetClientPointer(ClientPtr client, ClientPtr setter, DeviceIntPtr device) SetClientPointer(ClientPtr client, ClientPtr setter, DeviceIntPtr device)
{ {
if (!device->isMaster) if (!IsMaster(device))
{ {
ErrorF("[dix] Need master device for ClientPointer. This is a bug.\n"); ErrorF("[dix] Need master device for ClientPointer. This is a bug.\n");
return FALSE; return FALSE;
@ -5627,7 +5634,7 @@ PickPointer(ClientPtr client)
DeviceIntPtr it = inputInfo.devices; DeviceIntPtr it = inputInfo.devices;
while (it) while (it)
{ {
if (it->isMaster && it->spriteInfo->spriteOwner) if (IsMaster(it) && it->spriteInfo->spriteOwner)
{ {
client->clientPtr = it; client->clientPtr = it;
break; break;

View File

@ -325,7 +325,7 @@ AllocateMotionHistory(DeviceIntPtr pDev)
* potential valuators, plus the respective range of the valuators. * potential valuators, plus the respective range of the valuators.
* 3 * INT32 for (min_val, max_val, curr_val)) * 3 * INT32 for (min_val, max_val, curr_val))
*/ */
if (pDev->isMaster) if (IsMaster(pDev))
size = sizeof(INT32) * 3 * MAX_VALUATORS; size = sizeof(INT32) * 3 * MAX_VALUATORS;
else else
size = sizeof(INT32) * pDev->valuator->numAxes; size = sizeof(INT32) * pDev->valuator->numAxes;
@ -369,7 +369,7 @@ GetMotionHistory(DeviceIntPtr pDev, xTimecoord **buff, unsigned long start,
if (core && !pScreen) if (core && !pScreen)
return 0; return 0;
if (pDev->isMaster) if (IsMaster(pDev))
size = (sizeof(INT32) * 3 * MAX_VALUATORS) + sizeof(Time); size = (sizeof(INT32) * 3 * MAX_VALUATORS) + sizeof(Time);
else else
size = (sizeof(INT32) * pDev->valuator->numAxes) + sizeof(Time); size = (sizeof(INT32) * pDev->valuator->numAxes) + sizeof(Time);
@ -421,7 +421,7 @@ GetMotionHistory(DeviceIntPtr pDev, xTimecoord **buff, unsigned long start,
coord = rescaleValuatorAxis(coord, &from, to, pScreen->height); coord = rescaleValuatorAxis(coord, &from, to, pScreen->height);
memcpy(corebuf, &coord, sizeof(INT16)); memcpy(corebuf, &coord, sizeof(INT16));
} else if (pDev->isMaster) } else if (IsMaster(pDev))
{ {
memcpy(obuff, ibuff, sizeof(Time)); /* copy timestamp */ memcpy(obuff, ibuff, sizeof(Time)); /* copy timestamp */
@ -497,7 +497,7 @@ updateMotionHistory(DeviceIntPtr pDev, CARD32 ms, int first_valuator,
return; return;
v = pDev->valuator; v = pDev->valuator;
if (pDev->isMaster) if (IsMaster(pDev))
{ {
buff += ((sizeof(INT32) * 3 * MAX_VALUATORS) + sizeof(CARD32)) * buff += ((sizeof(INT32) * 3 * MAX_VALUATORS) + sizeof(CARD32)) *
v->last_motion; v->last_motion;

View File

@ -268,9 +268,9 @@ change_modmap(ClientPtr client, DeviceIntPtr dev, KeyCode *modkeymap,
do_modmap_change(client, dev, modmap); do_modmap_change(client, dev, modmap);
/* Change any attached masters/slaves. */ /* Change any attached masters/slaves. */
if (dev->isMaster) { if (IsMaster(dev)) {
for (tmp = inputInfo.devices; tmp; tmp = tmp->next) { for (tmp = inputInfo.devices; tmp; tmp = tmp->next) {
if (!tmp->isMaster && tmp->u.master == dev) if (!IsMaster(tmp) && tmp->u.master == dev)
if (check_modmap_change_slave(client, dev, tmp, modmap)) if (check_modmap_change_slave(client, dev, tmp, modmap))
do_modmap_change(client, tmp, modmap); do_modmap_change(client, tmp, modmap);
} }

View File

@ -323,7 +323,7 @@ xf86ActivateDevice(LocalDevicePtr local)
local->dev = dev; local->dev = dev;
dev->coreEvents = local->flags & XI86_ALWAYS_CORE; dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
dev->isMaster = FALSE; dev->type = SLAVE;
dev->spriteInfo->spriteOwner = FALSE; dev->spriteInfo->spriteOwner = FALSE;
dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab; dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
@ -664,7 +664,7 @@ DeleteInputDeviceRequest(DeviceIntPtr pDev)
InputDriverPtr drv = NULL; InputDriverPtr drv = NULL;
IDevRec *idev = NULL; IDevRec *idev = NULL;
IDevPtr *it; IDevPtr *it;
Bool isMaster = pDev->isMaster; Bool isMaster = IsMaster(pDev);
if (pInfo) /* need to get these before RemoveDevice */ if (pInfo) /* need to get these before RemoveDevice */
{ {

View File

@ -315,7 +315,7 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
/* only update for VCP, otherwise we get cursor jumps when removing a /* only update for VCP, otherwise we get cursor jumps when removing a
sprite. The second cursor is never HW rendered anyway. */ sprite. The second cursor is never HW rendered anyway. */
if (pDev == inputInfo.pointer || if (pDev == inputInfo.pointer ||
(!pDev->isMaster && pDev->u.master == inputInfo.pointer)) (!IsMaster(pDev) && pDev->u.master == inputInfo.pointer))
{ {
ScreenPriv->CurrentCursor = pCurs; ScreenPriv->CurrentCursor = pCurs;
ScreenPriv->x = x; ScreenPriv->x = x;
@ -380,7 +380,7 @@ xf86CursorMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
/* only update coordinate state for first sprite, otherwise we get jumps /* only update coordinate state for first sprite, otherwise we get jumps
when removing a sprite. The second sprite is never HW rendered anyway */ when removing a sprite. The second sprite is never HW rendered anyway */
if (pDev == inputInfo.pointer || if (pDev == inputInfo.pointer ||
(!pDev->isMaster && pDev->u.master == inputInfo.pointer)) (!IsMaster(pDev) && pDev->u.master == inputInfo.pointer))
{ {
ScreenPriv->x = x; ScreenPriv->x = x;
ScreenPriv->y = y; ScreenPriv->y = y;

View File

@ -580,6 +580,7 @@ extern Bool DevHasCursor(DeviceIntPtr pDev);
extern Bool IsPointerDevice( DeviceIntPtr dev); extern Bool IsPointerDevice( DeviceIntPtr dev);
extern Bool IsKeyboardDevice(DeviceIntPtr dev); extern Bool IsKeyboardDevice(DeviceIntPtr dev);
extern Bool IsPointerEvent(InternalEvent *event); extern Bool IsPointerEvent(InternalEvent *event);
extern Bool IsMaster(DeviceIntPtr dev);
/* /*
* These are deprecated compatibility functions and will be removed soon! * These are deprecated compatibility functions and will be removed soon!

View File

@ -458,6 +458,11 @@ typedef struct _SpriteInfoRec {
pointer that owns the sprite. */ pointer that owns the sprite. */
} SpriteInfoRec, *SpriteInfoPtr; } SpriteInfoRec, *SpriteInfoPtr;
/* device types */
#define MASTER_POINTER 1
#define MASTER_KEYBOARD 2
#define SLAVE 3
typedef struct _DeviceIntRec { typedef struct _DeviceIntRec {
DeviceRec public; DeviceRec public;
DeviceIntPtr next; DeviceIntPtr next;
@ -470,7 +475,7 @@ typedef struct _DeviceIntRec {
Bool enabled; /* TRUE if ON returns Success */ Bool enabled; /* TRUE if ON returns Success */
Bool coreEvents; /* TRUE if device also sends core */ Bool coreEvents; /* TRUE if device also sends core */
GrabInfoRec deviceGrab; /* grab on the device */ GrabInfoRec deviceGrab; /* grab on the device */
Bool isMaster; /* TRUE if device is master */ int type; /* MASTER_POINTER, MASTER_KEYBOARD, SLAVE */
Atom xinput_type; Atom xinput_type;
char *name; char *name;
CARD8 id; CARD8 id;

View File

@ -359,7 +359,7 @@ mieqProcessDeviceEvent(DeviceIntPtr dev,
NewCurrentScreen (dev, DequeueScreen(dev), x, y); NewCurrentScreen (dev, DequeueScreen(dev), x, y);
} }
else { else {
master = (!dev->isMaster && dev->u.master) ? dev->u.master : NULL; master = (!IsMaster(dev) && dev->u.master) ? dev->u.master : NULL;
if (master) if (master)
CopyGetMasterEvent(master, dev, event, masterEvents); CopyGetMasterEvent(master, dev, event, masterEvents);
@ -426,7 +426,7 @@ mieqProcessInputEvents(void)
pthread_mutex_unlock(&miEventQueueMutex); pthread_mutex_unlock(&miEventQueueMutex);
#endif #endif
master = (!dev->isMaster && dev->u.master) ? dev->u.master : NULL; master = (!IsMaster(dev) && dev->u.master) ? dev->u.master : NULL;
if (screenIsSaved == SCREEN_SAVER_ON) if (screenIsSaved == SCREEN_SAVER_ON)
dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset); dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);

View File

@ -51,7 +51,7 @@ static int miPointerPrivKeyIndex;
static DevPrivateKey miPointerPrivKey = &miPointerPrivKeyIndex; static DevPrivateKey miPointerPrivKey = &miPointerPrivKeyIndex;
#define MIPOINTER(dev) \ #define MIPOINTER(dev) \
((DevHasCursor((dev)) || (!dev->isMaster && !dev->u.master)) ? \ ((DevHasCursor((dev)) || (!IsMaster(isMaster) && !dev->u.master)) ? \
(miPointerPtr)dixLookupPrivate(&(dev)->devPrivates, miPointerPrivKey): \ (miPointerPtr)dixLookupPrivate(&(dev)->devPrivates, miPointerPrivKey): \
(miPointerPtr)dixLookupPrivate(&(dev)->u.master->devPrivates, miPointerPrivKey)) (miPointerPtr)dixLookupPrivate(&(dev)->u.master->devPrivates, miPointerPrivKey))
@ -186,8 +186,8 @@ miPointerDisplayCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
miPointerPtr pPointer; miPointerPtr pPointer;
/* return for keyboards */ /* return for keyboards */
if ((pDev->isMaster && !DevHasCursor(pDev)) || if ((IsMaster(pDev) && !DevHasCursor(pDev)) ||
(!pDev->isMaster && pDev->u.master && !DevHasCursor(pDev->u.master))) (!IsMaster(pDev) && pDev->u.master && !DevHasCursor(pDev->u.master)))
return FALSE; return FALSE;
pPointer = MIPOINTER(pDev); pPointer = MIPOINTER(pDev);
@ -286,7 +286,7 @@ miPointerDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen)
{ {
SetupScreen(pScreen); SetupScreen(pScreen);
if (!pDev->isMaster && pDev->u.master) if (!IsMaster(pDev) && pDev->u.master)
return; return;
(*pScreenPriv->spriteFuncs->DeviceCursorCleanup)(pDev, pScreen); (*pScreenPriv->spriteFuncs->DeviceCursorCleanup)(pDev, pScreen);
@ -474,7 +474,7 @@ miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen,
* VCP, as this may cause a non-HW rendered cursor to be rendered during * VCP, as this may cause a non-HW rendered cursor to be rendered during
* SIGIO. This again leads to allocs during SIGIO which leads to SIGABRT. * SIGIO. This again leads to allocs during SIGIO which leads to SIGABRT.
*/ */
if ((pDev == inputInfo.pointer || (!pDev->isMaster && pDev->u.master == inputInfo.pointer)) if ((pDev == inputInfo.pointer || (!IsMaster(pDev) && pDev->u.master == inputInfo.pointer))
&& !pScreenPriv->waitForUpdate && pScreen == pPointer->pSpriteScreen) && !pScreenPriv->waitForUpdate && pScreen == pPointer->pSpriteScreen)
{ {
pPointer->devx = x; pPointer->devx = x;

View File

@ -764,7 +764,7 @@ miSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
miCursorInfoPtr pCursorInfo; miCursorInfoPtr pCursorInfo;
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey);
if (!pDev->isMaster && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
{ {
ErrorF("[mi] miSpriteRealizeCursor called for floating device.\n"); ErrorF("[mi] miSpriteRealizeCursor called for floating device.\n");
return FALSE; return FALSE;
@ -795,7 +795,7 @@ miSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey);
if (!pDev->isMaster && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
{ {
ErrorF("[mi] miSpriteSetCursor called for floating device.\n"); ErrorF("[mi] miSpriteSetCursor called for floating device.\n");
return; return;
@ -912,7 +912,7 @@ miSpriteMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
CursorPtr pCursor; CursorPtr pCursor;
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey);
if (!pDev->isMaster && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
{ {
ErrorF("[mi] miSpriteMoveCursor called for floating device.\n"); ErrorF("[mi] miSpriteMoveCursor called for floating device.\n");
return; return;
@ -980,7 +980,7 @@ miSpriteRemoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen)
miCursorInfoPtr pCursorInfo; miCursorInfoPtr pCursorInfo;
if (!pDev->isMaster && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
{ {
ErrorF("[mi] miSpriteRemoveCursor called for floating device.\n"); ErrorF("[mi] miSpriteRemoveCursor called for floating device.\n");
return; return;
@ -1020,7 +1020,7 @@ miSpriteSaveUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen)
CursorPtr pCursor; CursorPtr pCursor;
miCursorInfoPtr pCursorInfo; miCursorInfoPtr pCursorInfo;
if (!pDev->isMaster && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
{ {
ErrorF("[mi] miSpriteSaveUnderCursor called for floating device.\n"); ErrorF("[mi] miSpriteSaveUnderCursor called for floating device.\n");
return; return;
@ -1063,7 +1063,7 @@ miSpriteRestoreCursor (DeviceIntPtr pDev, ScreenPtr pScreen)
CursorPtr pCursor; CursorPtr pCursor;
miCursorInfoPtr pCursorInfo; miCursorInfoPtr pCursorInfo;
if (!pDev->isMaster && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
{ {
ErrorF("[mi] miSpriteRestoreCursor called for floating device.\n"); ErrorF("[mi] miSpriteRestoreCursor called for floating device.\n");
return; return;
@ -1107,7 +1107,7 @@ miSpriteComputeSaved (DeviceIntPtr pDev, ScreenPtr pScreen)
CursorPtr pCursor; CursorPtr pCursor;
miCursorInfoPtr pCursorInfo; miCursorInfoPtr pCursorInfo;
if (!pDev->isMaster && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
{ {
ErrorF("[mi] miSpriteComputeSaved called for floating device.\n"); ErrorF("[mi] miSpriteComputeSaved called for floating device.\n");
return; return;

View File

@ -521,7 +521,7 @@ ProcXkbBell(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixBellAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixBellAccess);
if (rc == Success) if (rc == Success)
@ -604,7 +604,7 @@ ProcXkbLatchLockState(ClientPtr client)
status = Success; status = Success;
for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) { for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
if ((tmpd == dev) || (!tmpd->isMaster && tmpd->u.master == dev)) { if ((tmpd == dev) || (!IsMaster(tmpd) && tmpd->u.master == dev)) {
if (!tmpd->key || !tmpd->key->xkbInfo) if (!tmpd->key || !tmpd->key->xkbInfo)
continue; continue;
@ -746,7 +746,7 @@ ProcXkbSetControls(ClientPtr client)
for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) { for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
if (!tmpd->key || !tmpd->key->xkbInfo) if (!tmpd->key || !tmpd->key->xkbInfo)
continue; continue;
if ((tmpd == dev) || (!tmpd->isMaster && tmpd->u.master == dev)) { if ((tmpd == dev) || (!IsMaster(tmpd) && tmpd->u.master == dev)) {
xkbi = tmpd->key->xkbInfo; xkbi = tmpd->key->xkbInfo;
ctrl = xkbi->desc->ctrls; ctrl = xkbi->desc->ctrls;
new = *ctrl; new = *ctrl;
@ -2556,7 +2556,7 @@ ProcXkbSetMap(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
if (rc == Success) if (rc == Success)
@ -2579,7 +2579,7 @@ ProcXkbSetMap(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
if (rc == Success) if (rc == Success)
@ -2886,7 +2886,7 @@ ProcXkbSetCompatMap(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
if (rc == Success) if (rc == Success)
@ -2909,7 +2909,7 @@ ProcXkbSetCompatMap(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
if (rc == Success) if (rc == Success)
@ -3164,7 +3164,7 @@ ProcXkbSetIndicatorMap(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess);
if (rc == Success) if (rc == Success)
@ -3432,7 +3432,7 @@ ProcXkbSetNamedIndicator(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && !other->isMaster && (other->u.master == dev) && if ((other != dev) && !IsMaster(other) && (other->u.master == dev) &&
(XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success)) (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success))
{ {
rc = _XkbCreateIndicatorMap(other, stuff->indicator, rc = _XkbCreateIndicatorMap(other, stuff->indicator,
@ -3455,7 +3455,7 @@ ProcXkbSetNamedIndicator(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && !other->isMaster && (other->u.master == dev) && if ((other != dev) && !IsMaster(other) && (other->u.master == dev) &&
(XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success)) (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success))
{ {
_XkbSetNamedIndicator(client, other, stuff); _XkbSetNamedIndicator(client, other, stuff);
@ -4245,7 +4245,7 @@ ProcXkbSetNames(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
@ -4270,7 +4270,7 @@ ProcXkbSetNames(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
@ -5321,7 +5321,7 @@ ProcXkbSetGeometry(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if ((other != dev) && other->key && !other->isMaster && (other->u.master == dev)) if ((other != dev) && other->key && !IsMaster(other) && (other->u.master == dev))
{ {
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess); rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
if (rc == Success) if (rc == Success)
@ -5835,7 +5835,7 @@ ProcXkbGetKbdByName(ClientPtr client)
xkb->ctrls->num_groups= nTG; xkb->ctrls->num_groups= nTG;
for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) { for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
if ((tmpd == dev) || (!tmpd->isMaster && tmpd->u.master == dev)) { if ((tmpd == dev) || (!IsMaster(tmpd) && tmpd->u.master == dev)) {
if (tmpd != dev) if (tmpd != dev)
XkbCopyDeviceKeymap(tmpd, dev); XkbCopyDeviceKeymap(tmpd, dev);
@ -6499,7 +6499,7 @@ ProcXkbSetDeviceInfo(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if (((other != dev) && !other->isMaster && (other->u.master == dev)) && if (((other != dev) && !IsMaster(other) && (other->u.master == dev)) &&
((stuff->deviceSpec == XkbUseCoreKbd && other->key) || ((stuff->deviceSpec == XkbUseCoreKbd && other->key) ||
(stuff->deviceSpec == XkbUseCorePtr && other->button))) (stuff->deviceSpec == XkbUseCorePtr && other->button)))
{ {
@ -6524,7 +6524,7 @@ ProcXkbSetDeviceInfo(ClientPtr client)
DeviceIntPtr other; DeviceIntPtr other;
for (other = inputInfo.devices; other; other = other->next) for (other = inputInfo.devices; other; other = other->next)
{ {
if (((other != dev) && !other->isMaster && (other->u.master == dev)) && if (((other != dev) && !IsMaster(other) && (other->u.master == dev)) &&
((stuff->deviceSpec == XkbUseCoreKbd && other->key) || ((stuff->deviceSpec == XkbUseCoreKbd && other->key) ||
(stuff->deviceSpec == XkbUseCorePtr && other->button))) (stuff->deviceSpec == XkbUseCorePtr && other->button)))
{ {