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
commit b12d302df8
23 changed files with 135 additions and 122 deletions

View file

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

View file

@ -721,7 +721,7 @@ ChangeMasterDeviceClasses(DeviceIntPtr device, DeviceChangedEvent *dce)
{
DeviceIntPtr master = device->u.master;
if (device->isMaster)
if (IsMaster(device))
return;
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];
if (!(*kptr & bit))
return DONT_PROCESS;
if (device->isMaster) {
if (IsMaster(device)) {
DeviceIntPtr sd;
/*
@ -875,7 +875,7 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event)
* event being delivered through the slave first
*/
for (sd = inputInfo.devices; sd; sd = sd->next) {
if (sd->isMaster || sd->u.master != device)
if (IsMaster(sd) || sd->u.master != device)
continue;
if (!sd->button)
continue;
@ -1007,7 +1007,7 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
b = device->button;
k = device->key;
if (device->isMaster || !device->u.master)
if (IsMaster(device) || !device->u.master)
CheckMotion(event, device);
switch (event->type)
@ -1201,7 +1201,7 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
DeviceIntPtr mouse;
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 */
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->type = d->xinput_type;
dev->num_classes = num_classes;
if (d->isMaster && IsKeyboardDevice(d))
if (IsMaster(d) && IsKeyboardDevice(d))
dev->use = IsXKeyboard;
else if (d->isMaster && IsPointerDevice(d))
else if (IsMaster(d) && IsPointerDevice(d))
dev->use = IsXPointer;
else if (d->key && d->kbdfeed)
dev->use = IsXExtensionKeyboard;
@ -344,7 +344,7 @@ ProcXListInputDevices(ClientPtr client)
AddOtherInputDevices();
for (d = inputInfo.devices; d; d = d->next) {
if (d->isMaster &&
if (IsMaster(d) &&
d != inputInfo.pointer &&
d != inputInfo.keyboard)
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) {
if (d->isMaster &&
if (IsMaster(d) &&
d != inputInfo.pointer &&
d != inputInfo.keyboard)
continue; /* don't send master devices other than VCP/VCK */
@ -378,7 +378,7 @@ ProcXListInputDevices(ClientPtr client)
dev = (xDeviceInfoPtr) devbuf;
for (d = inputInfo.devices; d; d = d->next)
{
if (d->isMaster &&
if (IsMaster(d) &&
d != inputInfo.pointer &&
d != inputInfo.keyboard)
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)
{
if (d->isMaster &&
if (IsMaster(d) &&
d != inputInfo.pointer &&
d != inputInfo.keyboard)
continue; /* don't count master devices other than VCP/VCK */

View file

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

View file

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

View file

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

View file

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

View file

@ -74,7 +74,7 @@ ProcXIGrabDevice(ClientPtr client)
if (ret != Success)
return ret;
if (!dev->isMaster)
if (!IsMaster(dev))
stuff->paired_device_mode = GrabModeAsync;
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 */
if (!dev->isMaster)
if (!IsMaster(dev))
{
if (!dev->u.master)
stuff->paired_device_mode = GrabModeAsync;
@ -157,7 +157,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
if (!modifiers_failed)
return BadAlloc;
if (IsPointerDevice(dev) && dev->isMaster)
if (IsPointerDevice(dev) && IsMaster(dev))
mod_dev = GetPairedDevice(dev);
else
mod_dev = dev;
@ -261,7 +261,7 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
if (rc != Success)
return rc;
if (dev->isMaster)
if (IsMaster(dev))
mod_dev = GetPairedDevice(dev);
else
mod_dev = dev;