(1623) xkb: XkbSendNames(): move common code into a helper macro

A little bit of simplification by putting repeated statements into macro.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-07-16 17:13:16 +02:00
parent e01b9d1fcb
commit 1932110c5f

View File

@ -3783,6 +3783,13 @@ XkbComputeGetNamesReplySize(XkbDescPtr xkb, xkbGetNamesReply * rep)
return Success; return Success;
} }
#define _ADD_CARD32(val) \
do { \
*((CARD32 *) desc) = (val); \
if (client->swapped) { swapl((int *)desc); } \
desc += sizeof(CARD32); \
} while (0)
static int static int
XkbSendNames(ClientPtr client, XkbDescPtr xkb, xkbGetNamesReply rep) XkbSendNames(ClientPtr client, XkbDescPtr xkb, xkbGetNamesReply rep)
{ {
@ -3805,83 +3812,40 @@ XkbSendNames(ClientPtr client, XkbDescPtr xkb, xkbGetNamesReply rep)
return BadAlloc; return BadAlloc;
if (xkb->names) { if (xkb->names) {
if (which & XkbKeycodesNameMask) { if (which & XkbKeycodesNameMask) {
*((CARD32 *) desc) = xkb->names->keycodes; _ADD_CARD32(xkb->names->keycodes);
if (client->swapped) {
swapl((int *) desc);
}
desc += 4;
} }
if (which & XkbGeometryNameMask) { if (which & XkbGeometryNameMask) {
*((CARD32 *) desc) = xkb->names->geometry; _ADD_CARD32(xkb->names->geometry);
if (client->swapped) {
swapl((int *) desc);
}
desc += 4;
} }
if (which & XkbSymbolsNameMask) { if (which & XkbSymbolsNameMask) {
*((CARD32 *) desc) = xkb->names->symbols; _ADD_CARD32(xkb->names->symbols);
if (client->swapped) {
swapl((int *) desc);
}
desc += 4;
} }
if (which & XkbPhysSymbolsNameMask) { if (which & XkbPhysSymbolsNameMask) {
register CARD32 *atm = (CARD32 *) desc; _ADD_CARD32(xkb->names->phys_symbols);
atm[0] = (CARD32) xkb->names->phys_symbols;
if (client->swapped) {
swapl(&atm[0]);
}
desc += 4;
} }
if (which & XkbTypesNameMask) { if (which & XkbTypesNameMask) {
*((CARD32 *) desc) = (CARD32) xkb->names->types; _ADD_CARD32(xkb->names->types);
if (client->swapped) {
swapl((int *) desc);
}
desc += 4;
} }
if (which & XkbCompatNameMask) { if (which & XkbCompatNameMask) {
*((CARD32 *) desc) = (CARD32) xkb->names->compat; _ADD_CARD32(xkb->names->compat);
if (client->swapped) {
swapl((int *) desc);
}
desc += 4;
} }
if (which & XkbKeyTypeNamesMask) { if (which & XkbKeyTypeNamesMask) {
register CARD32 *atm = (CARD32 *) desc; for (i = 0; i < xkb->map->num_types; i++) {
register XkbKeyTypePtr type = xkb->map->types; _ADD_CARD32(xkb->map->types[i].name);
for (i = 0; i < xkb->map->num_types; i++, atm++, type++) {
*atm = (CARD32) type->name;
if (client->swapped) {
swapl(atm);
}
} }
desc = (char *) atm;
} }
if (which & XkbKTLevelNamesMask && xkb->map) { if (which & XkbKTLevelNamesMask && xkb->map) {
XkbKeyTypePtr type = xkb->map->types; XkbKeyTypePtr type = xkb->map->types;
register CARD32 *atm;
for (i = 0; i < rep.nTypes; i++, type++) { for (i = 0; i < rep.nTypes; i++, type++) {
*desc++ = type->num_levels; *desc++ = type->num_levels;
} }
desc += XkbPaddedSize(rep.nTypes) - rep.nTypes; desc += XkbPaddedSize(rep.nTypes) - rep.nTypes;
atm = (CARD32 *) desc;
type = xkb->map->types; type = xkb->map->types;
for (i = 0; i < xkb->map->num_types; i++, type++) { for (i = 0; i < xkb->map->num_types; i++, type++) {
register unsigned l; for (int l = 0; l < type->num_levels; l++) {
_ADD_CARD32(type->level_names[l]);
if (type->level_names) {
for (l = 0; l < type->num_levels; l++, atm++) {
*atm = type->level_names[l];
if (client->swapped) {
swapl(atm);
}
}
desc += type->num_levels * 4;
} }
} }
} }
@ -3916,12 +3880,8 @@ XkbSendNames(ClientPtr client, XkbDescPtr xkb, xkbGetNamesReply rep)
register CARD32 *atm = (CARD32 *) desc; register CARD32 *atm = (CARD32 *) desc;
for (i = 0; i < rep.nRadioGroups; i++, atm++) { for (i = 0; i < rep.nRadioGroups; i++, atm++) {
*atm = (CARD32) xkb->names->radio_groups[i]; _ADD_CARD32(xkb->names->radio_groups[i]);
if (client->swapped) {
swapl(atm);
}
} }
desc += rep.nRadioGroups * 4;
} }
} }
@ -3934,6 +3894,7 @@ XkbSendNames(ClientPtr client, XkbDescPtr xkb, xkbGetNamesReply rep)
free((char *) start); free((char *) start);
return Success; return Success;
} }
#undef _ADD_CARD32
int int
ProcXkbGetNames(ClientPtr client) ProcXkbGetNames(ClientPtr client)