xkb: simplify reply struct initialization
Use static initializaton as much as possible and drop unnecessary or duplicate zero assignments. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
parent
0180cf39f3
commit
41ae87912b
363
xkb/xkb.c
363
xkb/xkb.c
|
@ -173,7 +173,6 @@ int
|
||||||
ProcXkbUseExtension(ClientPtr client)
|
ProcXkbUseExtension(ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xkbUseExtensionReq);
|
REQUEST(xkbUseExtensionReq);
|
||||||
xkbUseExtensionReply rep;
|
|
||||||
int supported;
|
int supported;
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH(xkbUseExtensionReq);
|
REQUEST_SIZE_MATCH(xkbUseExtensionReq);
|
||||||
|
@ -197,11 +196,11 @@ ProcXkbUseExtension(ClientPtr client)
|
||||||
stuff->wantedMinor, SERVER_XKB_MAJOR_VERSION,
|
stuff->wantedMinor, SERVER_XKB_MAJOR_VERSION,
|
||||||
SERVER_XKB_MINOR_VERSION);
|
SERVER_XKB_MINOR_VERSION);
|
||||||
}
|
}
|
||||||
rep = (xkbUseExtensionReply) {
|
|
||||||
|
xkbUseExtensionReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.supported = supported,
|
.supported = supported,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.serverMajor = SERVER_XKB_MAJOR_VERSION,
|
.serverMajor = SERVER_XKB_MAJOR_VERSION,
|
||||||
.serverMinor = SERVER_XKB_MINOR_VERSION
|
.serverMinor = SERVER_XKB_MINOR_VERSION
|
||||||
};
|
};
|
||||||
|
@ -583,7 +582,6 @@ ProcXkbGetState(ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xkbGetStateReq);
|
REQUEST(xkbGetStateReq);
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xkbGetStateReply rep;
|
|
||||||
XkbStateRec *xkb;
|
XkbStateRec *xkb;
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetStateReq);
|
REQUEST_SIZE_MATCH(xkbGetStateReq);
|
||||||
|
@ -594,11 +592,11 @@ ProcXkbGetState(ClientPtr client)
|
||||||
CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
|
CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
|
||||||
|
|
||||||
xkb = &dev->key->xkbInfo->state;
|
xkb = &dev->key->xkbInfo->state;
|
||||||
rep = (xkbGetStateReply) {
|
|
||||||
|
xkbGetStateReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.mods = XkbStateFieldFromRec(xkb) & 0xff,
|
.mods = XkbStateFieldFromRec(xkb) & 0xff,
|
||||||
.baseMods = xkb->base_mods,
|
.baseMods = xkb->base_mods,
|
||||||
.latchedMods = xkb->latched_mods,
|
.latchedMods = xkb->latched_mods,
|
||||||
|
@ -693,7 +691,6 @@ ProcXkbLatchLockState(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbGetControls(ClientPtr client)
|
ProcXkbGetControls(ClientPtr client)
|
||||||
{
|
{
|
||||||
xkbGetControlsReply rep;
|
|
||||||
XkbControlsPtr xkb;
|
XkbControlsPtr xkb;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
|
|
||||||
|
@ -706,12 +703,13 @@ ProcXkbGetControls(ClientPtr client)
|
||||||
CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
|
CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
|
||||||
|
|
||||||
xkb = dev->key->xkbInfo->desc->ctrls;
|
xkb = dev->key->xkbInfo->desc->ctrls;
|
||||||
rep = (xkbGetControlsReply) {
|
|
||||||
|
xkbGetControlsReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = ((DeviceIntPtr) dev)->id,
|
.deviceID = ((DeviceIntPtr) dev)->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = bytes_to_int32(SIZEOF(xkbGetControlsReply) -
|
.length = bytes_to_int32(sizeof(xkbGetControlsReply) -
|
||||||
SIZEOF(xGenericReply)),
|
sizeof(xGenericReply)),
|
||||||
.mkDfltBtn = xkb->mk_dflt_btn,
|
.mkDfltBtn = xkb->mk_dflt_btn,
|
||||||
.numGroups = xkb->num_groups,
|
.numGroups = xkb->num_groups,
|
||||||
.groupsWrap = xkb->groups_wrap,
|
.groupsWrap = xkb->groups_wrap,
|
||||||
|
@ -1463,7 +1461,6 @@ int
|
||||||
ProcXkbGetMap(ClientPtr client)
|
ProcXkbGetMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xkbGetMapReply rep;
|
|
||||||
XkbDescRec *xkb;
|
XkbDescRec *xkb;
|
||||||
int n, status;
|
int n, status;
|
||||||
|
|
||||||
|
@ -1479,18 +1476,19 @@ ProcXkbGetMap(ClientPtr client)
|
||||||
CHK_MASK_LEGAL(0x03, stuff->partial, XkbAllMapComponentsMask);
|
CHK_MASK_LEGAL(0x03, stuff->partial, XkbAllMapComponentsMask);
|
||||||
|
|
||||||
xkb = dev->key->xkbInfo->desc;
|
xkb = dev->key->xkbInfo->desc;
|
||||||
rep = (xkbGetMapReply) {
|
|
||||||
|
xkbGetMapReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = (SIZEOF(xkbGetMapReply) - SIZEOF(xGenericReply)) >> 2,
|
.length = bytes_to_int32(sizeof(xkbGetMapReply) - sizeof(xGenericReply)),
|
||||||
.present = stuff->partial | stuff->full,
|
.present = stuff->partial | stuff->full,
|
||||||
.minKeyCode = xkb->min_key_code,
|
.minKeyCode = xkb->min_key_code,
|
||||||
.maxKeyCode = xkb->max_key_code
|
.maxKeyCode = xkb->max_key_code,
|
||||||
|
.totalTypes = xkb->map->num_types,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (stuff->full & XkbKeyTypesMask) {
|
if (stuff->full & XkbKeyTypesMask) {
|
||||||
rep.firstType = 0;
|
|
||||||
rep.nTypes = xkb->map->num_types;
|
rep.nTypes = xkb->map->num_types;
|
||||||
}
|
}
|
||||||
else if (stuff->partial & XkbKeyTypesMask) {
|
else if (stuff->partial & XkbKeyTypesMask) {
|
||||||
|
@ -1502,9 +1500,6 @@ ProcXkbGetMap(ClientPtr client)
|
||||||
rep.firstType = stuff->firstType;
|
rep.firstType = stuff->firstType;
|
||||||
rep.nTypes = stuff->nTypes;
|
rep.nTypes = stuff->nTypes;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rep.nTypes = 0;
|
|
||||||
rep.totalTypes = xkb->map->num_types;
|
|
||||||
|
|
||||||
n = XkbNumKeys(xkb);
|
n = XkbNumKeys(xkb);
|
||||||
if (stuff->full & XkbKeySymsMask) {
|
if (stuff->full & XkbKeySymsMask) {
|
||||||
|
@ -1516,9 +1511,6 @@ ProcXkbGetMap(ClientPtr client)
|
||||||
rep.firstKeySym = stuff->firstKeySym;
|
rep.firstKeySym = stuff->firstKeySym;
|
||||||
rep.nKeySyms = stuff->nKeySyms;
|
rep.nKeySyms = stuff->nKeySyms;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rep.nKeySyms = 0;
|
|
||||||
rep.totalSyms = 0;
|
|
||||||
|
|
||||||
if (stuff->full & XkbKeyActionsMask) {
|
if (stuff->full & XkbKeyActionsMask) {
|
||||||
rep.firstKeyAct = xkb->min_key_code;
|
rep.firstKeyAct = xkb->min_key_code;
|
||||||
|
@ -1529,9 +1521,6 @@ ProcXkbGetMap(ClientPtr client)
|
||||||
rep.firstKeyAct = stuff->firstKeyAct;
|
rep.firstKeyAct = stuff->firstKeyAct;
|
||||||
rep.nKeyActs = stuff->nKeyActs;
|
rep.nKeyActs = stuff->nKeyActs;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rep.nKeyActs = 0;
|
|
||||||
rep.totalActs = 0;
|
|
||||||
|
|
||||||
if (stuff->full & XkbKeyBehaviorsMask) {
|
if (stuff->full & XkbKeyBehaviorsMask) {
|
||||||
rep.firstKeyBehavior = xkb->min_key_code;
|
rep.firstKeyBehavior = xkb->min_key_code;
|
||||||
|
@ -1542,9 +1531,6 @@ ProcXkbGetMap(ClientPtr client)
|
||||||
rep.firstKeyBehavior = stuff->firstKeyBehavior;
|
rep.firstKeyBehavior = stuff->firstKeyBehavior;
|
||||||
rep.nKeyBehaviors = stuff->nKeyBehaviors;
|
rep.nKeyBehaviors = stuff->nKeyBehaviors;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rep.nKeyBehaviors = 0;
|
|
||||||
rep.totalKeyBehaviors = 0;
|
|
||||||
|
|
||||||
if (stuff->full & XkbVirtualModsMask)
|
if (stuff->full & XkbVirtualModsMask)
|
||||||
rep.virtualMods = ~0;
|
rep.virtualMods = ~0;
|
||||||
|
@ -1560,9 +1546,6 @@ ProcXkbGetMap(ClientPtr client)
|
||||||
rep.firstKeyExplicit = stuff->firstKeyExplicit;
|
rep.firstKeyExplicit = stuff->firstKeyExplicit;
|
||||||
rep.nKeyExplicit = stuff->nKeyExplicit;
|
rep.nKeyExplicit = stuff->nKeyExplicit;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rep.nKeyExplicit = 0;
|
|
||||||
rep.totalKeyExplicit = 0;
|
|
||||||
|
|
||||||
if (stuff->full & XkbModifierMapMask) {
|
if (stuff->full & XkbModifierMapMask) {
|
||||||
rep.firstModMapKey = xkb->min_key_code;
|
rep.firstModMapKey = xkb->min_key_code;
|
||||||
|
@ -1573,9 +1556,6 @@ ProcXkbGetMap(ClientPtr client)
|
||||||
rep.firstModMapKey = stuff->firstModMapKey;
|
rep.firstModMapKey = stuff->firstModMapKey;
|
||||||
rep.nModMapKeys = stuff->nModMapKeys;
|
rep.nModMapKeys = stuff->nModMapKeys;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rep.nModMapKeys = 0;
|
|
||||||
rep.totalModMapKeys = 0;
|
|
||||||
|
|
||||||
if (stuff->full & XkbVirtualModMapMask) {
|
if (stuff->full & XkbVirtualModMapMask) {
|
||||||
rep.firstVModMapKey = xkb->min_key_code;
|
rep.firstVModMapKey = xkb->min_key_code;
|
||||||
|
@ -1586,9 +1566,6 @@ ProcXkbGetMap(ClientPtr client)
|
||||||
rep.firstVModMapKey = stuff->firstVModMapKey;
|
rep.firstVModMapKey = stuff->firstVModMapKey;
|
||||||
rep.nVModMapKeys = stuff->nVModMapKeys;
|
rep.nVModMapKeys = stuff->nVModMapKeys;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rep.nVModMapKeys = 0;
|
|
||||||
rep.totalVModMapKeys = 0;
|
|
||||||
|
|
||||||
if ((status = XkbComputeGetMapReplySize(xkb, &rep)) != Success)
|
if ((status = XkbComputeGetMapReplySize(xkb, &rep)) != Success)
|
||||||
return status;
|
return status;
|
||||||
|
@ -2156,14 +2133,11 @@ SetKeySyms(ClientPtr client,
|
||||||
s = XkbKeyNumGroups(xkb, i);
|
s = XkbKeyNumGroups(xkb, i);
|
||||||
}
|
}
|
||||||
if (s != xkb->ctrls->num_groups) {
|
if (s != xkb->ctrls->num_groups) {
|
||||||
xkbControlsNotify cn;
|
xkbControlsNotify cn = {
|
||||||
XkbControlsRec old;
|
.requestMajor = XkbReqCode,
|
||||||
|
.requestMinor = X_kbSetMap,
|
||||||
cn.keycode = 0;
|
};
|
||||||
cn.eventType = 0;
|
XkbControlsRec old = *xkb->ctrls;
|
||||||
cn.requestMajor = XkbReqCode;
|
|
||||||
cn.requestMinor = X_kbSetMap;
|
|
||||||
old = *xkb->ctrls;
|
|
||||||
xkb->ctrls->num_groups = s;
|
xkb->ctrls->num_groups = s;
|
||||||
if (XkbComputeControlsNotify(dev, &old, xkb->ctrls, &cn, FALSE))
|
if (XkbComputeControlsNotify(dev, &old, xkb->ctrls, &cn, FALSE))
|
||||||
XkbSendControlsNotify(dev, &cn);
|
XkbSendControlsNotify(dev, &cn);
|
||||||
|
@ -2900,7 +2874,6 @@ XkbSendCompatMap(ClientPtr client,
|
||||||
int
|
int
|
||||||
ProcXkbGetCompatMap(ClientPtr client)
|
ProcXkbGetCompatMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
xkbGetCompatMapReply rep;
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbDescPtr xkb;
|
XkbDescPtr xkb;
|
||||||
XkbCompatMapPtr compat;
|
XkbCompatMapPtr compat;
|
||||||
|
@ -2916,13 +2889,14 @@ ProcXkbGetCompatMap(ClientPtr client)
|
||||||
xkb = dev->key->xkbInfo->desc;
|
xkb = dev->key->xkbInfo->desc;
|
||||||
compat = xkb->compat;
|
compat = xkb->compat;
|
||||||
|
|
||||||
rep = (xkbGetCompatMapReply) {
|
xkbGetCompatMapReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.firstSI = stuff->firstSI,
|
.firstSI = stuff->firstSI,
|
||||||
.nSI = stuff->nSI
|
.nSI = stuff->nSI,
|
||||||
|
.nTotalSI = compat->num_si,
|
||||||
|
.groups = stuff->groups,
|
||||||
};
|
};
|
||||||
if (stuff->getAllSI) {
|
if (stuff->getAllSI) {
|
||||||
rep.firstSI = 0;
|
rep.firstSI = 0;
|
||||||
|
@ -2933,8 +2907,6 @@ ProcXkbGetCompatMap(ClientPtr client)
|
||||||
client->errorValue = _XkbErrCode2(0x05, compat->num_si);
|
client->errorValue = _XkbErrCode2(0x05, compat->num_si);
|
||||||
return BadValue;
|
return BadValue;
|
||||||
}
|
}
|
||||||
rep.nTotalSI = compat->num_si;
|
|
||||||
rep.groups = stuff->groups;
|
|
||||||
XkbComputeGetCompatMapReplySize(compat, &rep);
|
XkbComputeGetCompatMapReplySize(compat, &rep);
|
||||||
return XkbSendCompatMap(client, compat, &rep);
|
return XkbSendCompatMap(client, compat, &rep);
|
||||||
}
|
}
|
||||||
|
@ -3080,12 +3052,11 @@ _XkbSetCompatMap(ClientPtr client, DeviceIntPtr dev,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (req->recomputeActions) {
|
if (req->recomputeActions) {
|
||||||
XkbChangesRec change;
|
XkbChangesRec change = { 0 };
|
||||||
unsigned check;
|
unsigned check;
|
||||||
XkbEventCauseRec cause;
|
XkbEventCauseRec cause;
|
||||||
|
|
||||||
XkbSetCauseXkbReq(&cause, X_kbSetCompatMap, client);
|
XkbSetCauseXkbReq(&cause, X_kbSetCompatMap, client);
|
||||||
memset(&change, 0, sizeof(XkbChangesRec));
|
|
||||||
XkbUpdateActions(dev, xkb->min_key_code, XkbNumKeys(xkb), &change,
|
XkbUpdateActions(dev, xkb->min_key_code, XkbNumKeys(xkb), &change,
|
||||||
&check, &cause);
|
&check, &cause);
|
||||||
if (check)
|
if (check)
|
||||||
|
@ -3161,7 +3132,6 @@ ProcXkbSetCompatMap(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbGetIndicatorState(ClientPtr client)
|
ProcXkbGetIndicatorState(ClientPtr client)
|
||||||
{
|
{
|
||||||
xkbGetIndicatorStateReply rep;
|
|
||||||
XkbSrvLedInfoPtr sli;
|
XkbSrvLedInfoPtr sli;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
|
|
||||||
|
@ -3178,11 +3148,10 @@ ProcXkbGetIndicatorState(ClientPtr client)
|
||||||
if (!sli)
|
if (!sli)
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
|
|
||||||
rep = (xkbGetIndicatorStateReply) {
|
xkbGetIndicatorStateReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.state = sli->effectiveState
|
.state = sli->effectiveState
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3277,7 +3246,6 @@ XkbSendIndicatorMap(ClientPtr client,
|
||||||
int
|
int
|
||||||
ProcXkbGetIndicatorMap(ClientPtr client)
|
ProcXkbGetIndicatorMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
xkbGetIndicatorMapReply rep;
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbDescPtr xkb;
|
XkbDescPtr xkb;
|
||||||
XkbIndicatorPtr leds;
|
XkbIndicatorPtr leds;
|
||||||
|
@ -3293,11 +3261,10 @@ ProcXkbGetIndicatorMap(ClientPtr client)
|
||||||
xkb = dev->key->xkbInfo->desc;
|
xkb = dev->key->xkbInfo->desc;
|
||||||
leds = xkb->indicators;
|
leds = xkb->indicators;
|
||||||
|
|
||||||
rep = (xkbGetIndicatorMapReply) {
|
xkbGetIndicatorMapReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.which = stuff->which
|
.which = stuff->which
|
||||||
};
|
};
|
||||||
XkbComputeGetIndicatorMapReplySize(leds, &rep);
|
XkbComputeGetIndicatorMapReplySize(leds, &rep);
|
||||||
|
@ -3420,7 +3387,6 @@ int
|
||||||
ProcXkbGetNamedIndicator(ClientPtr client)
|
ProcXkbGetNamedIndicator(ClientPtr client)
|
||||||
{
|
{
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xkbGetNamedIndicatorReply rep;
|
|
||||||
register int i = 0;
|
register int i = 0;
|
||||||
XkbSrvLedInfoPtr sli;
|
XkbSrvLedInfoPtr sli;
|
||||||
XkbIndicatorMapPtr map = NULL;
|
XkbIndicatorMapPtr map = NULL;
|
||||||
|
@ -3449,12 +3415,13 @@ ProcXkbGetNamedIndicator(ClientPtr client)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rep = (xkbGetNamedIndicatorReply) {
|
xkbGetNamedIndicatorReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.indicator = stuff->indicator
|
.indicator = stuff->indicator,
|
||||||
|
.supported = TRUE,
|
||||||
|
.ndx = XkbNoIndicator,
|
||||||
};
|
};
|
||||||
if (map != NULL) {
|
if (map != NULL) {
|
||||||
rep.found = TRUE;
|
rep.found = TRUE;
|
||||||
|
@ -3469,22 +3436,6 @@ ProcXkbGetNamedIndicator(ClientPtr client)
|
||||||
rep.realMods = map->mods.real_mods;
|
rep.realMods = map->mods.real_mods;
|
||||||
rep.virtualMods = map->mods.vmods;
|
rep.virtualMods = map->mods.vmods;
|
||||||
rep.ctrls = map->ctrls;
|
rep.ctrls = map->ctrls;
|
||||||
rep.supported = TRUE;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
rep.found = FALSE;
|
|
||||||
rep.on = FALSE;
|
|
||||||
rep.realIndicator = FALSE;
|
|
||||||
rep.ndx = XkbNoIndicator;
|
|
||||||
rep.flags = 0;
|
|
||||||
rep.whichGroups = 0;
|
|
||||||
rep.groups = 0;
|
|
||||||
rep.whichMods = 0;
|
|
||||||
rep.mods = 0;
|
|
||||||
rep.realMods = 0;
|
|
||||||
rep.virtualMods = 0;
|
|
||||||
rep.ctrls = 0;
|
|
||||||
rep.supported = TRUE;
|
|
||||||
}
|
}
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
swapl(&rep.length);
|
swapl(&rep.length);
|
||||||
|
@ -3578,8 +3529,8 @@ _XkbSetNamedIndicator(ClientPtr client, DeviceIntPtr dev,
|
||||||
XkbIndicatorMapPtr map;
|
XkbIndicatorMapPtr map;
|
||||||
DeviceIntPtr kbd;
|
DeviceIntPtr kbd;
|
||||||
XkbEventCauseRec cause;
|
XkbEventCauseRec cause;
|
||||||
xkbExtensionDeviceNotify ed;
|
xkbExtensionDeviceNotify ed = { 0 };
|
||||||
XkbChangesRec changes;
|
XkbChangesRec changes = { 0 };
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = _XkbCreateIndicatorMap(dev, stuff->indicator, stuff->ledClass,
|
rc = _XkbCreateIndicatorMap(dev, stuff->indicator, stuff->ledClass,
|
||||||
|
@ -3617,8 +3568,6 @@ _XkbSetNamedIndicator(ClientPtr client, DeviceIntPtr dev,
|
||||||
statec |= ((sli->effectiveState ^ sli->explicitState) & (1 << led));
|
statec |= ((sli->effectiveState ^ sli->explicitState) & (1 << led));
|
||||||
}
|
}
|
||||||
|
|
||||||
memset((char *) &ed, 0, sizeof(xkbExtensionDeviceNotify));
|
|
||||||
memset((char *) &changes, 0, sizeof(XkbChangesRec));
|
|
||||||
XkbSetCauseXkbReq(&cause, X_kbSetNamedIndicator, client);
|
XkbSetCauseXkbReq(&cause, X_kbSetNamedIndicator, client);
|
||||||
if (namec)
|
if (namec)
|
||||||
XkbApplyLedNameChanges(dev, sli, namec, &ed, &changes, &cause);
|
XkbApplyLedNameChanges(dev, sli, namec, &ed, &changes, &cause);
|
||||||
|
@ -4016,7 +3965,6 @@ ProcXkbGetNames(ClientPtr client)
|
||||||
{
|
{
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbDescPtr xkb;
|
XkbDescPtr xkb;
|
||||||
xkbGetNamesReply rep;
|
|
||||||
|
|
||||||
REQUEST(xkbGetNamesReq);
|
REQUEST(xkbGetNamesReq);
|
||||||
REQUEST_SIZE_MATCH(xkbGetNamesReq);
|
REQUEST_SIZE_MATCH(xkbGetNamesReq);
|
||||||
|
@ -4028,11 +3976,11 @@ ProcXkbGetNames(ClientPtr client)
|
||||||
CHK_MASK_LEGAL(0x01, stuff->which, XkbAllNamesMask);
|
CHK_MASK_LEGAL(0x01, stuff->which, XkbAllNamesMask);
|
||||||
|
|
||||||
xkb = dev->key->xkbInfo->desc;
|
xkb = dev->key->xkbInfo->desc;
|
||||||
rep = (xkbGetNamesReply) {
|
|
||||||
|
xkbGetNamesReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.which = stuff->which,
|
.which = stuff->which,
|
||||||
.nTypes = xkb->map->num_types,
|
.nTypes = xkb->map->num_types,
|
||||||
.firstKey = xkb->min_key_code,
|
.firstKey = xkb->min_key_code,
|
||||||
|
@ -5090,7 +5038,6 @@ int
|
||||||
ProcXkbGetGeometry(ClientPtr client)
|
ProcXkbGetGeometry(ClientPtr client)
|
||||||
{
|
{
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xkbGetGeometryReply rep;
|
|
||||||
XkbGeometryPtr geom;
|
XkbGeometryPtr geom;
|
||||||
Bool shouldFree;
|
Bool shouldFree;
|
||||||
Status status;
|
Status status;
|
||||||
|
@ -5105,11 +5052,11 @@ ProcXkbGetGeometry(ClientPtr client)
|
||||||
CHK_ATOM_OR_NONE(stuff->name);
|
CHK_ATOM_OR_NONE(stuff->name);
|
||||||
|
|
||||||
geom = XkbLookupNamedGeometry(dev, stuff->name, &shouldFree);
|
geom = XkbLookupNamedGeometry(dev, stuff->name, &shouldFree);
|
||||||
rep = (xkbGetGeometryReply) {
|
|
||||||
|
xkbGetGeometryReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0
|
|
||||||
};
|
};
|
||||||
status = XkbComputeGetGeometryReplySize(geom, &rep, stuff->name);
|
status = XkbComputeGetGeometryReplySize(geom, &rep, stuff->name);
|
||||||
if (status != Success)
|
if (status != Success)
|
||||||
|
@ -5612,22 +5559,23 @@ _XkbSetGeometry(ClientPtr client, DeviceIntPtr dev, xkbSetGeometryReq * stuff)
|
||||||
{
|
{
|
||||||
XkbDescPtr xkb;
|
XkbDescPtr xkb;
|
||||||
Bool new_name;
|
Bool new_name;
|
||||||
xkbNewKeyboardNotify nkn;
|
|
||||||
XkbGeometryPtr geom, old;
|
XkbGeometryPtr geom, old;
|
||||||
XkbGeometrySizesRec sizes;
|
|
||||||
Status status;
|
Status status;
|
||||||
|
|
||||||
xkb = dev->key->xkbInfo->desc;
|
xkb = dev->key->xkbInfo->desc;
|
||||||
old = xkb->geom;
|
old = xkb->geom;
|
||||||
xkb->geom = NULL;
|
xkb->geom = NULL;
|
||||||
|
|
||||||
sizes.which = XkbGeomAllMask;
|
XkbGeometrySizesRec sizes = {
|
||||||
sizes.num_properties = stuff->nProperties;
|
.which = XkbGeomAllMask,
|
||||||
sizes.num_colors = stuff->nColors;
|
.num_properties = stuff->nProperties,
|
||||||
sizes.num_shapes = stuff->nShapes;
|
.num_colors = stuff->nColors,
|
||||||
sizes.num_sections = stuff->nSections;
|
.num_shapes = stuff->nShapes,
|
||||||
sizes.num_doodads = stuff->nDoodads;
|
.num_sections = stuff->nSections,
|
||||||
sizes.num_key_aliases = stuff->nKeyAliases;
|
.num_doodads = stuff->nDoodads,
|
||||||
|
.num_key_aliases = stuff->nKeyAliases,
|
||||||
|
};
|
||||||
|
|
||||||
if ((status = XkbAllocGeometry(xkb, &sizes)) != Success) {
|
if ((status = XkbAllocGeometry(xkb, &sizes)) != Success) {
|
||||||
xkb->geom = old;
|
xkb->geom = old;
|
||||||
return status;
|
return status;
|
||||||
|
@ -5646,18 +5594,21 @@ _XkbSetGeometry(ClientPtr client, DeviceIntPtr dev, xkbSetGeometryReq * stuff)
|
||||||
if (old)
|
if (old)
|
||||||
XkbFreeGeometry(old, XkbGeomAllMask, TRUE);
|
XkbFreeGeometry(old, XkbGeomAllMask, TRUE);
|
||||||
if (new_name) {
|
if (new_name) {
|
||||||
xkbNamesNotify nn;
|
xkbNamesNotify nn = {
|
||||||
|
.changed = XkbGeometryNameMask,
|
||||||
memset(&nn, 0, sizeof(xkbNamesNotify));
|
};
|
||||||
nn.changed = XkbGeometryNameMask;
|
|
||||||
XkbSendNamesNotify(dev, &nn);
|
XkbSendNamesNotify(dev, &nn);
|
||||||
}
|
}
|
||||||
nkn.deviceID = nkn.oldDeviceID = dev->id;
|
|
||||||
nkn.minKeyCode = nkn.oldMinKeyCode = xkb->min_key_code;
|
xkbNewKeyboardNotify nkn = {
|
||||||
nkn.maxKeyCode = nkn.oldMaxKeyCode = xkb->max_key_code;
|
.deviceID = nkn.oldDeviceID = dev->id,
|
||||||
nkn.requestMajor = XkbReqCode;
|
.minKeyCode = nkn.oldMinKeyCode = xkb->min_key_code,
|
||||||
nkn.requestMinor = X_kbSetGeometry;
|
.maxKeyCode = nkn.oldMaxKeyCode = xkb->max_key_code,
|
||||||
nkn.changed = XkbNKN_GeometryMask;
|
.requestMajor = XkbReqCode,
|
||||||
|
.requestMinor = X_kbSetGeometry,
|
||||||
|
.changed = XkbNKN_GeometryMask,
|
||||||
|
};
|
||||||
|
|
||||||
XkbSendNewKeyboardNotify(dev, &nkn);
|
XkbSendNewKeyboardNotify(dev, &nkn);
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
@ -5703,7 +5654,6 @@ int
|
||||||
ProcXkbPerClientFlags(ClientPtr client)
|
ProcXkbPerClientFlags(ClientPtr client)
|
||||||
{
|
{
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xkbPerClientFlagsReply rep;
|
|
||||||
XkbInterestPtr interest;
|
XkbInterestPtr interest;
|
||||||
Mask access_mode = DixGetAttrAccess | DixSetAttrAccess;
|
Mask access_mode = DixGetAttrAccess | DixSetAttrAccess;
|
||||||
|
|
||||||
|
@ -5754,10 +5704,9 @@ ProcXkbPerClientFlags(ClientPtr client)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rep = (xkbPerClientFlagsReply) {
|
xkbPerClientFlagsReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.supported = XkbPCF_AllFlagsMask,
|
.supported = XkbPCF_AllFlagsMask,
|
||||||
.value = client->xkbClientFlags & XkbPCF_AllFlagsMask,
|
.value = client->xkbClientFlags & XkbPCF_AllFlagsMask,
|
||||||
.autoCtrls = interest ? interest->autoCtrls : 0,
|
.autoCtrls = interest ? interest->autoCtrls : 0,
|
||||||
|
@ -5850,7 +5799,6 @@ int
|
||||||
ProcXkbListComponents(ClientPtr client)
|
ProcXkbListComponents(ClientPtr client)
|
||||||
{
|
{
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xkbListComponentsReply rep;
|
|
||||||
unsigned len;
|
unsigned len;
|
||||||
unsigned char *str;
|
unsigned char *str;
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
|
@ -5880,29 +5828,15 @@ ProcXkbListComponents(ClientPtr client)
|
||||||
}
|
}
|
||||||
if ((XkbPaddedSize(len) / 4) != client->req_len)
|
if ((XkbPaddedSize(len) / 4) != client->req_len)
|
||||||
return BadLength;
|
return BadLength;
|
||||||
rep = (xkbListComponentsReply) {
|
|
||||||
|
xkbListComponentsReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.nKeymaps = 0,
|
|
||||||
.nKeycodes = 0,
|
|
||||||
.nTypes = 0,
|
|
||||||
.nCompatMaps = 0,
|
|
||||||
.nSymbols = 0,
|
|
||||||
.nGeometries = 0,
|
|
||||||
.extra = 0
|
|
||||||
};
|
};
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
swaps(&rep.sequenceNumber);
|
swaps(&rep.sequenceNumber);
|
||||||
swapl(&rep.length);
|
swapl(&rep.length);
|
||||||
swaps(&rep.nKeymaps);
|
|
||||||
swaps(&rep.nKeycodes);
|
|
||||||
swaps(&rep.nTypes);
|
|
||||||
swaps(&rep.nCompatMaps);
|
|
||||||
swaps(&rep.nSymbols);
|
|
||||||
swaps(&rep.nGeometries);
|
|
||||||
swaps(&rep.extra);
|
|
||||||
}
|
}
|
||||||
WriteToClient(client, SIZEOF(xkbListComponentsReply), &rep);
|
WriteToClient(client, SIZEOF(xkbListComponentsReply), &rep);
|
||||||
return Success;
|
return Success;
|
||||||
|
@ -5954,17 +5888,15 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
DeviceIntPtr tmpd;
|
DeviceIntPtr tmpd;
|
||||||
DeviceIntPtr master;
|
DeviceIntPtr master;
|
||||||
xkbGetKbdByNameReply rep = { 0 };
|
|
||||||
xkbGetMapReply mrep = { 0 };
|
xkbGetMapReply mrep = { 0 };
|
||||||
xkbGetCompatMapReply crep = { 0 };
|
xkbGetCompatMapReply crep = { 0 };
|
||||||
xkbGetIndicatorMapReply irep = { 0 };
|
xkbGetIndicatorMapReply irep = { 0 };
|
||||||
xkbGetNamesReply nrep = { 0 };
|
xkbGetNamesReply nrep = { 0 };
|
||||||
xkbGetGeometryReply grep = { 0 };
|
xkbGetGeometryReply grep = { 0 };
|
||||||
XkbComponentNamesRec names = { 0 };
|
|
||||||
XkbDescPtr xkb, new;
|
XkbDescPtr xkb, new;
|
||||||
XkbEventCauseRec cause;
|
XkbEventCauseRec cause;
|
||||||
unsigned char *str;
|
unsigned char *str;
|
||||||
char mapFile[PATH_MAX];
|
char mapFile[PATH_MAX] = { 0 };
|
||||||
unsigned len;
|
unsigned len;
|
||||||
unsigned fwant, fneed, reported;
|
unsigned fwant, fneed, reported;
|
||||||
int status;
|
int status;
|
||||||
|
@ -5992,11 +5924,15 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
return BadMatch;
|
return BadMatch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
names.keycodes = GetComponentSpec(client, stuff, &str, TRUE, &status);
|
|
||||||
names.types = GetComponentSpec(client, stuff, &str, TRUE, &status);
|
XkbComponentNamesRec names = {
|
||||||
names.compat = GetComponentSpec(client, stuff, &str, TRUE, &status);
|
.keycodes = GetComponentSpec(client, stuff, &str, TRUE, &status),
|
||||||
names.symbols = GetComponentSpec(client, stuff, &str, TRUE, &status);
|
.types = GetComponentSpec(client, stuff, &str, TRUE, &status),
|
||||||
names.geometry = GetComponentSpec(client, stuff, &str, TRUE, &status);
|
.compat = GetComponentSpec(client, stuff, &str, TRUE, &status),
|
||||||
|
.symbols = GetComponentSpec(client, stuff, &str, TRUE, &status),
|
||||||
|
.geometry = GetComponentSpec(client, stuff, &str, TRUE, &status),
|
||||||
|
};
|
||||||
|
|
||||||
if (status == Success) {
|
if (status == Success) {
|
||||||
len = str - ((unsigned char *) stuff);
|
len = str - ((unsigned char *) stuff);
|
||||||
if ((XkbPaddedSize(len) / 4) != client->req_len)
|
if ((XkbPaddedSize(len) / 4) != client->req_len)
|
||||||
|
@ -6036,18 +5972,10 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
geom_changed = FALSE;
|
geom_changed = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(mapFile, 0, PATH_MAX);
|
|
||||||
rep.type = X_Reply;
|
|
||||||
rep.deviceID = dev->id;
|
|
||||||
rep.sequenceNumber = client->sequence;
|
|
||||||
rep.length = 0;
|
|
||||||
rep.minKeyCode = xkb->min_key_code;
|
|
||||||
rep.maxKeyCode = xkb->max_key_code;
|
|
||||||
rep.loaded = FALSE;
|
|
||||||
fwant =
|
fwant =
|
||||||
XkbConvertGetByNameComponents(TRUE, stuff->want) | XkmVirtualModsMask;
|
XkbConvertGetByNameComponents(TRUE, stuff->want) | XkmVirtualModsMask;
|
||||||
fneed = XkbConvertGetByNameComponents(TRUE, stuff->need);
|
fneed = XkbConvertGetByNameComponents(TRUE, stuff->need);
|
||||||
rep.reported = XkbConvertGetByNameComponents(FALSE, fwant | fneed);
|
|
||||||
if (stuff->load) {
|
if (stuff->load) {
|
||||||
fneed |= XkmKeymapRequired;
|
fneed |= XkmKeymapRequired;
|
||||||
fwant |= XkmKeymapLegal;
|
fwant |= XkmKeymapLegal;
|
||||||
|
@ -6057,11 +5985,17 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
fwant |= XkmIndicatorsIndex;
|
fwant |= XkmIndicatorsIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We pass dev in here so we can get the old names out if needed. */
|
xkbGetKbdByNameReply rep = {
|
||||||
rep.found = XkbDDXLoadKeymapByNames(dev, &names, fwant, fneed, &new,
|
.type = X_Reply,
|
||||||
mapFile, PATH_MAX);
|
.deviceID = dev->id,
|
||||||
rep.newKeyboard = FALSE;
|
.sequenceNumber = client->sequence,
|
||||||
rep.pad1 = rep.pad2 = rep.pad3 = rep.pad4 = 0;
|
.minKeyCode = xkb->min_key_code,
|
||||||
|
.maxKeyCode = xkb->max_key_code,
|
||||||
|
.reported = XkbConvertGetByNameComponents(FALSE, fwant | fneed),
|
||||||
|
/* We pass dev in here so we can get the old names out if needed. */
|
||||||
|
.found = XkbDDXLoadKeymapByNames(dev, &names, fwant, fneed, &new,
|
||||||
|
mapFile, PATH_MAX),
|
||||||
|
};
|
||||||
|
|
||||||
stuff->want |= stuff->need;
|
stuff->want |= stuff->need;
|
||||||
if (new == NULL)
|
if (new == NULL)
|
||||||
|
@ -6071,9 +6005,7 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
rep.loaded = TRUE;
|
rep.loaded = TRUE;
|
||||||
if (stuff->load ||
|
if (stuff->load ||
|
||||||
((rep.reported & XkbGBN_SymbolsMask) && (new->compat))) {
|
((rep.reported & XkbGBN_SymbolsMask) && (new->compat))) {
|
||||||
XkbChangesRec changes;
|
XkbChangesRec changes = { 0 };
|
||||||
|
|
||||||
memset(&changes, 0, sizeof(changes));
|
|
||||||
XkbUpdateDescActions(new,
|
XkbUpdateDescActions(new,
|
||||||
new->min_key_code, XkbNumKeys(new), &changes);
|
new->min_key_code, XkbNumKeys(new), &changes);
|
||||||
}
|
}
|
||||||
|
@ -6088,28 +6020,18 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
((SIZEOF(xkbGetMapReply) - SIZEOF(xGenericReply)) >> 2);
|
((SIZEOF(xkbGetMapReply) - SIZEOF(xGenericReply)) >> 2);
|
||||||
mrep.minKeyCode = new->min_key_code;
|
mrep.minKeyCode = new->min_key_code;
|
||||||
mrep.maxKeyCode = new->max_key_code;
|
mrep.maxKeyCode = new->max_key_code;
|
||||||
mrep.present = 0;
|
|
||||||
mrep.totalSyms = mrep.totalActs =
|
mrep.totalSyms = mrep.totalActs =
|
||||||
mrep.totalKeyBehaviors = mrep.totalKeyExplicit =
|
mrep.totalKeyBehaviors = mrep.totalKeyExplicit =
|
||||||
mrep.totalModMapKeys = mrep.totalVModMapKeys = 0;
|
mrep.totalModMapKeys = mrep.totalVModMapKeys = 0;
|
||||||
if (rep.reported & (XkbGBN_TypesMask | XkbGBN_ClientSymbolsMask)) {
|
if (rep.reported & (XkbGBN_TypesMask | XkbGBN_ClientSymbolsMask)) {
|
||||||
mrep.present |= XkbKeyTypesMask;
|
mrep.present |= XkbKeyTypesMask;
|
||||||
mrep.firstType = 0;
|
|
||||||
mrep.nTypes = mrep.totalTypes = new->map->num_types;
|
mrep.nTypes = mrep.totalTypes = new->map->num_types;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
mrep.firstType = mrep.nTypes = 0;
|
|
||||||
mrep.totalTypes = 0;
|
|
||||||
}
|
|
||||||
if (rep.reported & XkbGBN_ClientSymbolsMask) {
|
if (rep.reported & XkbGBN_ClientSymbolsMask) {
|
||||||
mrep.present |= (XkbKeySymsMask | XkbModifierMapMask);
|
mrep.present |= (XkbKeySymsMask | XkbModifierMapMask);
|
||||||
mrep.firstKeySym = mrep.firstModMapKey = new->min_key_code;
|
mrep.firstKeySym = mrep.firstModMapKey = new->min_key_code;
|
||||||
mrep.nKeySyms = mrep.nModMapKeys = XkbNumKeys(new);
|
mrep.nKeySyms = mrep.nModMapKeys = XkbNumKeys(new);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
mrep.firstKeySym = mrep.firstModMapKey = 0;
|
|
||||||
mrep.nKeySyms = mrep.nModMapKeys = 0;
|
|
||||||
}
|
|
||||||
if (rep.reported & XkbGBN_ServerSymbolsMask) {
|
if (rep.reported & XkbGBN_ServerSymbolsMask) {
|
||||||
mrep.present |= XkbAllServerInfoMask;
|
mrep.present |= XkbAllServerInfoMask;
|
||||||
mrep.virtualMods = ~0;
|
mrep.virtualMods = ~0;
|
||||||
|
@ -6120,12 +6042,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
mrep.firstVModMapKey = new->min_key_code;
|
mrep.firstVModMapKey = new->min_key_code;
|
||||||
mrep.nVModMapKeys = XkbNumKeys(new);
|
mrep.nVModMapKeys = XkbNumKeys(new);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
mrep.virtualMods = 0;
|
|
||||||
mrep.firstKeyAct = mrep.firstKeyBehavior =
|
|
||||||
mrep.firstKeyExplicit = 0;
|
|
||||||
mrep.nKeyActs = mrep.nKeyBehaviors = mrep.nKeyExplicit = 0;
|
|
||||||
}
|
|
||||||
XkbComputeGetMapReplySize(new, &mrep);
|
XkbComputeGetMapReplySize(new, &mrep);
|
||||||
rep.length += SIZEOF(xGenericReply) / 4 + mrep.length;
|
rep.length += SIZEOF(xGenericReply) / 4 + mrep.length;
|
||||||
}
|
}
|
||||||
|
@ -6135,9 +6051,7 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
crep.type = X_Reply;
|
crep.type = X_Reply;
|
||||||
crep.deviceID = dev->id;
|
crep.deviceID = dev->id;
|
||||||
crep.sequenceNumber = client->sequence;
|
crep.sequenceNumber = client->sequence;
|
||||||
crep.length = 0;
|
|
||||||
crep.groups = XkbAllGroupsMask;
|
crep.groups = XkbAllGroupsMask;
|
||||||
crep.firstSI = 0;
|
|
||||||
crep.nSI = crep.nTotalSI = new->compat->num_si;
|
crep.nSI = crep.nTotalSI = new->compat->num_si;
|
||||||
XkbComputeGetCompatMapReplySize(new->compat, &crep);
|
XkbComputeGetCompatMapReplySize(new->compat, &crep);
|
||||||
rep.length += SIZEOF(xGenericReply) / 4 + crep.length;
|
rep.length += SIZEOF(xGenericReply) / 4 + crep.length;
|
||||||
|
@ -6148,7 +6062,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
irep.type = X_Reply;
|
irep.type = X_Reply;
|
||||||
irep.deviceID = dev->id;
|
irep.deviceID = dev->id;
|
||||||
irep.sequenceNumber = client->sequence;
|
irep.sequenceNumber = client->sequence;
|
||||||
irep.length = 0;
|
|
||||||
irep.which = XkbAllIndicatorsMask;
|
irep.which = XkbAllIndicatorsMask;
|
||||||
XkbComputeGetIndicatorMapReplySize(new->indicators, &irep);
|
XkbComputeGetIndicatorMapReplySize(new->indicators, &irep);
|
||||||
rep.length += SIZEOF(xGenericReply) / 4 + irep.length;
|
rep.length += SIZEOF(xGenericReply) / 4 + irep.length;
|
||||||
|
@ -6159,30 +6072,17 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
nrep.type = X_Reply;
|
nrep.type = X_Reply;
|
||||||
nrep.deviceID = dev->id;
|
nrep.deviceID = dev->id;
|
||||||
nrep.sequenceNumber = client->sequence;
|
nrep.sequenceNumber = client->sequence;
|
||||||
nrep.length = 0;
|
|
||||||
nrep.minKeyCode = new->min_key_code;
|
nrep.minKeyCode = new->min_key_code;
|
||||||
nrep.maxKeyCode = new->max_key_code;
|
nrep.maxKeyCode = new->max_key_code;
|
||||||
if (rep.reported & XkbGBN_OtherNamesMask) {
|
if (rep.reported & XkbGBN_OtherNamesMask) {
|
||||||
nrep.which = XkbAllNamesMask;
|
nrep.which = XkbAllNamesMask;
|
||||||
if (new->map != NULL)
|
if (new->map != NULL)
|
||||||
nrep.nTypes = new->map->num_types;
|
nrep.nTypes = new->map->num_types;
|
||||||
else
|
|
||||||
nrep.nTypes = 0;
|
|
||||||
nrep.nKTLevels = 0;
|
|
||||||
nrep.groupNames = XkbAllGroupsMask;
|
nrep.groupNames = XkbAllGroupsMask;
|
||||||
nrep.virtualMods = XkbAllVirtualModsMask;
|
nrep.virtualMods = XkbAllVirtualModsMask;
|
||||||
nrep.indicators = XkbAllIndicatorsMask;
|
nrep.indicators = XkbAllIndicatorsMask;
|
||||||
nrep.nRadioGroups = new->names->num_rg;
|
nrep.nRadioGroups = new->names->num_rg;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
nrep.which = 0;
|
|
||||||
nrep.nTypes = 0;
|
|
||||||
nrep.nKTLevels = 0;
|
|
||||||
nrep.groupNames = 0;
|
|
||||||
nrep.virtualMods = 0;
|
|
||||||
nrep.indicators = 0;
|
|
||||||
nrep.nRadioGroups = 0;
|
|
||||||
}
|
|
||||||
if (rep.reported & XkbGBN_KeyNamesMask) {
|
if (rep.reported & XkbGBN_KeyNamesMask) {
|
||||||
nrep.which |= XkbKeyNamesMask;
|
nrep.which |= XkbKeyNamesMask;
|
||||||
nrep.firstKey = new->min_key_code;
|
nrep.firstKey = new->min_key_code;
|
||||||
|
@ -6193,8 +6093,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
nrep.which &= ~(XkbKeyNamesMask | XkbKeyAliasesMask);
|
nrep.which &= ~(XkbKeyNamesMask | XkbKeyAliasesMask);
|
||||||
nrep.firstKey = nrep.nKeys = 0;
|
|
||||||
nrep.nKeyAliases = 0;
|
|
||||||
}
|
}
|
||||||
XkbComputeGetNamesReplySize(new, &nrep);
|
XkbComputeGetNamesReplySize(new, &nrep);
|
||||||
rep.length += SIZEOF(xGenericReply) / 4 + nrep.length;
|
rep.length += SIZEOF(xGenericReply) / 4 + nrep.length;
|
||||||
|
@ -6205,13 +6103,7 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
grep.type = X_Reply;
|
grep.type = X_Reply;
|
||||||
grep.deviceID = dev->id;
|
grep.deviceID = dev->id;
|
||||||
grep.sequenceNumber = client->sequence;
|
grep.sequenceNumber = client->sequence;
|
||||||
grep.length = 0;
|
|
||||||
grep.found = TRUE;
|
grep.found = TRUE;
|
||||||
grep.pad = 0;
|
|
||||||
grep.widthMM = grep.heightMM = 0;
|
|
||||||
grep.nProperties = grep.nColors = grep.nShapes = 0;
|
|
||||||
grep.nSections = grep.nDoodads = 0;
|
|
||||||
grep.baseColorNdx = grep.labelColorNdx = 0;
|
|
||||||
XkbComputeGetGeometryReplySize(new->geom, &grep, None);
|
XkbComputeGetGeometryReplySize(new->geom, &grep, None);
|
||||||
rep.length += SIZEOF(xGenericReply) / 4 + grep.length;
|
rep.length += SIZEOF(xGenericReply) / 4 + grep.length;
|
||||||
}
|
}
|
||||||
|
@ -6237,7 +6129,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
XkbSendGeometry(client, new->geom, &grep);
|
XkbSendGeometry(client, new->geom, &grep);
|
||||||
if (rep.loaded) {
|
if (rep.loaded) {
|
||||||
XkbDescPtr old_xkb;
|
XkbDescPtr old_xkb;
|
||||||
xkbNewKeyboardNotify nkn;
|
|
||||||
|
|
||||||
old_xkb = xkb;
|
old_xkb = xkb;
|
||||||
xkb = new;
|
xkb = new;
|
||||||
|
@ -6246,14 +6137,16 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
|
|
||||||
XkbCopyControls(xkb, old_xkb);
|
XkbCopyControls(xkb, old_xkb);
|
||||||
|
|
||||||
nkn.deviceID = nkn.oldDeviceID = dev->id;
|
xkbNewKeyboardNotify nkn = {
|
||||||
nkn.minKeyCode = new->min_key_code;
|
.deviceID = nkn.oldDeviceID = dev->id,
|
||||||
nkn.maxKeyCode = new->max_key_code;
|
.minKeyCode = new->min_key_code,
|
||||||
nkn.oldMinKeyCode = xkb->min_key_code;
|
.maxKeyCode = new->max_key_code,
|
||||||
nkn.oldMaxKeyCode = xkb->max_key_code;
|
.oldMinKeyCode = xkb->min_key_code,
|
||||||
nkn.requestMajor = XkbReqCode;
|
.oldMaxKeyCode = xkb->max_key_code,
|
||||||
nkn.requestMinor = X_kbGetKbdByName;
|
.requestMajor = XkbReqCode,
|
||||||
nkn.changed = XkbNKN_KeycodesMask;
|
.requestMinor = X_kbGetKbdByName,
|
||||||
|
.changed = XkbNKN_KeycodesMask,
|
||||||
|
};
|
||||||
if (geom_changed)
|
if (geom_changed)
|
||||||
nkn.changed |= XkbNKN_GeometryMask;
|
nkn.changed |= XkbNKN_GeometryMask;
|
||||||
XkbSendNewKeyboardNotify(dev, &nkn);
|
XkbSendNewKeyboardNotify(dev, &nkn);
|
||||||
|
@ -6299,12 +6192,12 @@ static int
|
||||||
ComputeDeviceLedInfoSize(DeviceIntPtr dev,
|
ComputeDeviceLedInfoSize(DeviceIntPtr dev,
|
||||||
unsigned int what, XkbSrvLedInfoPtr sli)
|
unsigned int what, XkbSrvLedInfoPtr sli)
|
||||||
{
|
{
|
||||||
int nNames, nMaps;
|
int nNames = 0, nMaps = 0;
|
||||||
register unsigned n, bit;
|
register unsigned n, bit;
|
||||||
|
|
||||||
if (sli == NULL)
|
if (sli == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
nNames = nMaps = 0;
|
|
||||||
if ((what & XkbXI_IndicatorNamesMask) == 0)
|
if ((what & XkbXI_IndicatorNamesMask) == 0)
|
||||||
sli->namesPresent = 0;
|
sli->namesPresent = 0;
|
||||||
if ((what & XkbXI_IndicatorMapsMask) == 0)
|
if ((what & XkbXI_IndicatorMapsMask) == 0)
|
||||||
|
@ -6330,7 +6223,7 @@ CheckDeviceLedFBs(DeviceIntPtr dev,
|
||||||
{
|
{
|
||||||
int nFBs = 0;
|
int nFBs = 0;
|
||||||
int length = 0;
|
int length = 0;
|
||||||
Bool classOk;
|
Bool classOk = FALSE;
|
||||||
|
|
||||||
if (class == XkbDfltXIClass) {
|
if (class == XkbDfltXIClass) {
|
||||||
if (dev->kbdfeed)
|
if (dev->kbdfeed)
|
||||||
|
@ -6342,7 +6235,7 @@ CheckDeviceLedFBs(DeviceIntPtr dev,
|
||||||
return XkbKeyboardErrorCode;
|
return XkbKeyboardErrorCode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
classOk = FALSE;
|
|
||||||
if ((dev->kbdfeed) &&
|
if ((dev->kbdfeed) &&
|
||||||
((class == KbdFeedbackClass) || (class == XkbAllXIClasses))) {
|
((class == KbdFeedbackClass) || (class == XkbAllXIClasses))) {
|
||||||
KbdFeedbackPtr kf;
|
KbdFeedbackPtr kf;
|
||||||
|
@ -6394,16 +6287,16 @@ CheckDeviceLedFBs(DeviceIntPtr dev,
|
||||||
static int
|
static int
|
||||||
SendDeviceLedInfo(XkbSrvLedInfoPtr sli, ClientPtr client)
|
SendDeviceLedInfo(XkbSrvLedInfoPtr sli, ClientPtr client)
|
||||||
{
|
{
|
||||||
xkbDeviceLedsWireDesc wire;
|
int length = 0;
|
||||||
int length;
|
xkbDeviceLedsWireDesc wire = {
|
||||||
|
.ledClass = sli->class,
|
||||||
|
.ledID = sli->id,
|
||||||
|
.namesPresent = sli->namesPresent,
|
||||||
|
.mapsPresent = sli->mapsPresent,
|
||||||
|
.physIndicators = sli->physIndicators,
|
||||||
|
.state = sli->effectiveState,
|
||||||
|
};
|
||||||
|
|
||||||
length = 0;
|
|
||||||
wire.ledClass = sli->class;
|
|
||||||
wire.ledID = sli->id;
|
|
||||||
wire.namesPresent = sli->namesPresent;
|
|
||||||
wire.mapsPresent = sli->mapsPresent;
|
|
||||||
wire.physIndicators = sli->physIndicators;
|
|
||||||
wire.state = sli->effectiveState;
|
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
swaps(&wire.ledClass);
|
swaps(&wire.ledClass);
|
||||||
swaps(&wire.ledID);
|
swaps(&wire.ledID);
|
||||||
|
@ -6433,24 +6326,25 @@ SendDeviceLedInfo(XkbSrvLedInfoPtr sli, ClientPtr client)
|
||||||
}
|
}
|
||||||
if (sli->mapsPresent) {
|
if (sli->mapsPresent) {
|
||||||
for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
|
for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
|
||||||
xkbIndicatorMapWireDesc iwire;
|
|
||||||
|
|
||||||
if (sli->mapsPresent & bit) {
|
if (sli->mapsPresent & bit) {
|
||||||
iwire.flags = sli->maps[i].flags;
|
xkbIndicatorMapWireDesc iwire = {
|
||||||
iwire.whichGroups = sli->maps[i].which_groups;
|
.flags = sli->maps[i].flags,
|
||||||
iwire.groups = sli->maps[i].groups;
|
.whichGroups = sli->maps[i].which_groups,
|
||||||
iwire.whichMods = sli->maps[i].which_mods;
|
.groups = sli->maps[i].groups,
|
||||||
iwire.mods = sli->maps[i].mods.mask;
|
.whichMods = sli->maps[i].which_mods,
|
||||||
iwire.realMods = sli->maps[i].mods.real_mods;
|
.mods = sli->maps[i].mods.mask,
|
||||||
iwire.virtualMods = sli->maps[i].mods.vmods;
|
.realMods = sli->maps[i].mods.real_mods,
|
||||||
iwire.ctrls = sli->maps[i].ctrls;
|
.virtualMods = sli->maps[i].mods.vmods,
|
||||||
|
.ctrls = sli->maps[i].ctrls,
|
||||||
|
};
|
||||||
|
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
swaps(&iwire.virtualMods);
|
swaps(&iwire.virtualMods);
|
||||||
swapl(&iwire.ctrls);
|
swapl(&iwire.ctrls);
|
||||||
}
|
}
|
||||||
WriteToClient(client, SIZEOF(xkbIndicatorMapWireDesc),
|
WriteToClient(client, SIZEOF(xkbIndicatorMapWireDesc),
|
||||||
&iwire);
|
&iwire);
|
||||||
length += SIZEOF(xkbIndicatorMapWireDesc);
|
length += sizeof(xkbIndicatorMapWireDesc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6506,7 +6400,6 @@ int
|
||||||
ProcXkbGetDeviceInfo(ClientPtr client)
|
ProcXkbGetDeviceInfo(ClientPtr client)
|
||||||
{
|
{
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xkbGetDeviceInfoReply rep;
|
|
||||||
int status, nDeviceLedFBs;
|
int status, nDeviceLedFBs;
|
||||||
unsigned length, nameLen;
|
unsigned length, nameLen;
|
||||||
CARD16 ledClass, ledID;
|
CARD16 ledClass, ledID;
|
||||||
|
@ -6529,19 +6422,14 @@ ProcXkbGetDeviceInfo(ClientPtr client)
|
||||||
wanted &= ~XkbXI_IndicatorsMask;
|
wanted &= ~XkbXI_IndicatorsMask;
|
||||||
|
|
||||||
nameLen = XkbSizeCountedString(dev->name);
|
nameLen = XkbSizeCountedString(dev->name);
|
||||||
rep = (xkbGetDeviceInfoReply) {
|
|
||||||
|
xkbGetDeviceInfoReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.deviceID = dev->id,
|
.deviceID = dev->id,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = nameLen / 4,
|
.length = bytes_to_int32(nameLen),
|
||||||
.present = wanted,
|
.present = wanted,
|
||||||
.supported = XkbXI_AllDeviceFeaturesMask,
|
.supported = XkbXI_AllDeviceFeaturesMask,
|
||||||
.unsupported = 0,
|
|
||||||
.nDeviceLedFBs = 0,
|
|
||||||
.firstBtnWanted = 0,
|
|
||||||
.nBtnsWanted = 0,
|
|
||||||
.firstBtnRtrn = 0,
|
|
||||||
.nBtnsRtrn = 0,
|
|
||||||
.totalBtns = dev->button ? dev->button->numButtons : 0,
|
.totalBtns = dev->button ? dev->button->numButtons : 0,
|
||||||
.hasOwnState = (dev->key && dev->key->xkbInfo),
|
.hasOwnState = (dev->key && dev->key->xkbInfo),
|
||||||
.dfltKbdFB = dev->kbdfeed ? dev->kbdfeed->ctrl.id : XkbXINone,
|
.dfltKbdFB = dev->kbdfeed ? dev->kbdfeed->ctrl.id : XkbXINone,
|
||||||
|
@ -6870,9 +6758,8 @@ _XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev,
|
||||||
xkbSetDeviceInfoReq * stuff)
|
xkbSetDeviceInfoReq * stuff)
|
||||||
{
|
{
|
||||||
char *wire;
|
char *wire;
|
||||||
xkbExtensionDeviceNotify ed;
|
xkbExtensionDeviceNotify ed = { 0 };
|
||||||
|
|
||||||
memset((char *) &ed, 0, SIZEOF(xkbExtensionDeviceNotify));
|
|
||||||
ed.deviceID = dev->id;
|
ed.deviceID = dev->id;
|
||||||
wire = (char *) &stuff[1];
|
wire = (char *) &stuff[1];
|
||||||
if (stuff->change & XkbXI_ButtonActionsMask) {
|
if (stuff->change & XkbXI_ButtonActionsMask) {
|
||||||
|
@ -6993,7 +6880,6 @@ int
|
||||||
ProcXkbSetDebuggingFlags(ClientPtr client)
|
ProcXkbSetDebuggingFlags(ClientPtr client)
|
||||||
{
|
{
|
||||||
CARD32 newFlags, newCtrls, extraLength;
|
CARD32 newFlags, newCtrls, extraLength;
|
||||||
xkbSetDebuggingFlagsReply rep;
|
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xkbSetDebuggingFlagsReq);
|
REQUEST(xkbSetDebuggingFlagsReq);
|
||||||
|
@ -7035,10 +6921,9 @@ ProcXkbSetDebuggingFlags(ClientPtr client)
|
||||||
xkbDebugFlags = newFlags;
|
xkbDebugFlags = newFlags;
|
||||||
xkbDebugCtrls = newCtrls;
|
xkbDebugCtrls = newCtrls;
|
||||||
|
|
||||||
rep = (xkbSetDebuggingFlagsReply) {
|
xkbSetDebuggingFlagsReply rep = {
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
|
||||||
.currentFlags = newFlags,
|
.currentFlags = newFlags,
|
||||||
.currentCtrls = newCtrls,
|
.currentCtrls = newCtrls,
|
||||||
.supportedFlags = ~0,
|
.supportedFlags = ~0,
|
||||||
|
|
Loading…
Reference in New Issue