(1623) 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
							
								
									e24a7463a5
								
							
						
					
					
						commit
						48393b4ec8
					
				
							
								
								
									
										361
									
								
								xkb/xkb.c
								
								
								
								
							
							
						
						
									
										361
									
								
								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; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     xkbGetKbdByNameReply rep = {  | ||||||
|  |         .type = X_Reply, | ||||||
|  |         .deviceID = dev->id, | ||||||
|  |         .sequenceNumber = client->sequence, | ||||||
|  |         .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. */ |         /* We pass dev in here so we can get the old names out if needed. */ | ||||||
|     rep.found = XkbDDXLoadKeymapByNames(dev, &names, fwant, fneed, &new, |         .found = XkbDDXLoadKeymapByNames(dev, &names, fwant, fneed, &new, | ||||||
|                                         mapFile, PATH_MAX); |                                          mapFile, PATH_MAX), | ||||||
|     rep.newKeyboard = FALSE; |     }; | ||||||
|     rep.pad1 = rep.pad2 = rep.pad3 = rep.pad4 = 0; |  | ||||||
| 
 | 
 | ||||||
|     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