From c729bfd1f9bf1addc4a2cc7ed3eb3042a97f93f3 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 8 Jul 2024 22:00:31 +0200 Subject: [PATCH] Xext: xv: use REPLY_*() macros for preparing / sending replies Use the new macros for preparing and sending replies to clients. Signed-off-by: Enrico Weigelt, metux IT consult --- Xext/xvdisp.c | 190 +++++++++++--------------------------------------- 1 file changed, 40 insertions(+), 150 deletions(-) diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c index 6babae19d..a5b5f331c 100644 --- a/Xext/xvdisp.c +++ b/Xext/xvdisp.c @@ -61,22 +61,14 @@ ProcXvQueryExtension(ClientPtr client) REQUEST_HEAD_STRUCT(xvQueryExtensionReq); xvQueryExtensionReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, .length = 0, .version = XvVersion, .revision = XvRevision }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swaps(&rep.version); - swaps(&rep.revision); - } - - WriteToClient(client, sizeof(rep), &rep); - return Success; + REPLY_FIELD_CARD16(version); + REPLY_FIELD_CARD16(revision); + REPLY_SEND_RET_SUCCESS(); } static int @@ -97,22 +89,14 @@ ProcXvQueryAdaptors(ClientPtr client) if (rc != Success) return rc; - xvQueryAdaptorsReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, - }; - pScreen = pWin->drawable.pScreen; pxvs = (XvScreenPtr) dixLookupPrivate(&pScreen->devPrivates, XvGetScreenKey()); if (!pxvs) { - if (client->swapped) swaps(&rep.sequenceNumber); - WriteToClient(client, sizeof(rep), &rep); - return Success; + xvQueryAdaptorsReply rep = { 0 }; + REPLY_SEND_RET_SUCCESS(); } - rep.num_adaptors = pxvs->nAdaptors; - /* CALCULATE THE TOTAL SIZE OF THE REPLY IN BYTES */ totalSize = pxvs->nAdaptors * sz_xvAdaptorInfo; @@ -131,14 +115,6 @@ ProcXvQueryAdaptors(ClientPtr client) memset(payload, 0, totalSize); char *walk = payload; - rep.length = bytes_to_int32(totalSize); - - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swaps(&rep.num_adaptors); - } - na = pxvs->nAdaptors; pa = pxvs->pAdaptors; while (na--) { @@ -150,12 +126,8 @@ ProcXvQueryAdaptors(ClientPtr client) ainfo->name_size = nameSize = strlen(pa->name); ainfo->num_formats = pa->nFormats; - if (client->swapped) { - swapl(&ainfo->base_id); - swaps(&ainfo->name_size); - swaps(&ainfo->num_ports); - swaps(&ainfo->num_formats); - } + CLIENT_STRUCT_CARD32_1(ainfo, base_id); + CLIENT_STRUCT_CARD16_3(ainfo, name_size, num_ports, num_formats); walk += sizeof(ainfo); memcpy(walk, pa->name, nameSize); @@ -167,16 +139,19 @@ ProcXvQueryAdaptors(ClientPtr client) xvFormat *format = (xvFormat *)walk; format->depth = pf->depth; format->visual = pf->visual; - if (client->swapped) swapl(&format->visual); + CLIENT_STRUCT_CARD32_1(format, visual); pf++; } pa++; - } - WriteToClient(client, sizeof(rep), &rep); - WriteToClient(client, sizeof(payload), payload); + xvQueryAdaptorsReply rep = { + rep.num_adaptors = pxvs->nAdaptors, + }; + + REPLY_FIELD_CARD16(num_adaptors); + REPLY_SEND_EXTRA(payload, sizeof(payload)); return Success; } @@ -210,20 +185,10 @@ ProcXvQueryEncodings(ClientPtr client) char *walk = buf; xvQueryEncodingsReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, .num_encodings = pPort->pAdaptor->nEncodings, .length = bytes_to_int32(totalSize), }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swaps(&rep.num_encodings); - } - - WriteToClient(client, sizeof(rep), &rep); - ne = pPort->pAdaptor->nEncodings; pe = pPort->pAdaptor->pEncodings; while (ne--) { @@ -237,14 +202,8 @@ ProcXvQueryEncodings(ClientPtr client) einfo->rate.numerator = pe->rate.numerator; einfo->rate.denominator = pe->rate.denominator; - if (client->swapped) { - swapl(&einfo->encoding); - swaps(&einfo->name_size); - swaps(&einfo->width); - swaps(&einfo->height); - swapl(&einfo->rate.numerator); - swapl(&einfo->rate.denominator); - } + CLIENT_STRUCT_CARD32_3(einfo, encoding, rate.numerator, rate.denominator); + CLIENT_STRUCT_CARD16_3(einfo, name_size, width, height); walk += sizeof(xvEncodingInfo); memcpy(walk, pe->name, nameSize); @@ -253,7 +212,8 @@ ProcXvQueryEncodings(ClientPtr client) pe++; } - WriteToClient(client, sizeof(buf), buf); + REPLY_FIELD_CARD16(num_encodings); + REPLY_SEND_EXTRA(buf, sizeof(buf)); return Success; } @@ -493,18 +453,10 @@ ProcXvGrabPort(ClientPtr client) return status; } xvGrabPortReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, .result = result }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - } - - WriteToClient(client, sizeof(rep), &rep); - return Success; + REPLY_SEND_RET_SUCCESS(); } static int @@ -619,19 +571,11 @@ ProcXvGetPortAttribute(ClientPtr client) } xvGetPortAttributeReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, .value = value }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.value); - } - - WriteToClient(client, sizeof(rep), &rep); - return Success; + REPLY_FIELD_CARD32(value); + REPLY_SEND_RET_SUCCESS(); } static int @@ -655,21 +599,13 @@ ProcXvQueryBestSize(ClientPtr client) &actual_width, &actual_height); xvQueryBestSizeReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, .actual_width = actual_width, .actual_height = actual_height }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swaps(&rep.actual_width); - swaps(&rep.actual_height); - } - - WriteToClient(client, sizeof(rep), &rep); - return Success; + REPLY_FIELD_CARD16(actual_width); + REPLY_FIELD_CARD16(actual_height); + REPLY_SEND_RET_SUCCESS(); } static int @@ -694,22 +630,11 @@ ProcXvQueryPortAttributes(ClientPtr client) + text_size; xvQueryPortAttributesReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, .num_attributes = pPort->pAdaptor->nAttributes, .length = bytes_to_int32(length), .text_size = text_size, }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.num_attributes); - swapl(&rep.text_size); - } - - WriteToClient(client, sizeof(rep), &rep); - char buf[length]; char * walk = buf; memset(buf, 0, sizeof(buf)); @@ -724,12 +649,7 @@ ProcXvQueryPortAttributes(ClientPtr client) Info->max = pAtt->max_value; Info->size = pad_to_int32(size); - if (client->swapped) { - swapl(&Info->flags); - swapl(&Info->size); - swapl(&Info->min); - swapl(&Info->max); - } + CLIENT_STRUCT_CARD32_4(Info, flags, size, min, max); walk += sizeof(xvAttributeInfo); @@ -737,7 +657,9 @@ ProcXvQueryPortAttributes(ClientPtr client) walk += pad_to_int32(size); } - WriteToClient(client, sizeof(buf), buf); + REPLY_FIELD_CARD32(num_attributes); + REPLY_FIELD_CARD32(text_size); + REPLY_SEND_EXTRA(buf, sizeof(buf)); return Success; } @@ -944,7 +866,6 @@ ProcXvShmPutImage(ClientPtr client) static int ProcXvQueryImageAttributes(ClientPtr client) { - xvQueryImageAttributesReply rep; int size, num_planes, i; CARD16 width, height; XvImagePtr pImage = NULL; @@ -990,28 +911,19 @@ ProcXvQueryImageAttributes(ClientPtr client) &width, &height, offsets, pitches); - rep = (xvQueryImageAttributesReply) { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = num_planes * 2, // in 32bit units + xvQueryImageAttributesReply rep = { .num_planes = num_planes, .width = width, .height = height, .data_size = size }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.num_planes); - swapl(&rep.data_size); - swaps(&rep.width); - swaps(&rep.height); - SwapLongs((CARD32 *) offsets, rep.length); - } - - WriteToClient(client, sizeof(rep), &rep); - WriteToClient(client, rep.length * sizeof(CARD32), offsets); + REPLY_FIELD_CARD32(num_planes); + REPLY_FIELD_CARD32(data_size); + REPLY_FIELD_CARD16(width); + REPLY_FIELD_CARD16(height); + REPLY_BUF_CARD32(offsets, num_planes * 2); + REPLY_SEND_EXTRA(offsets, num_planes * sizeof(CARD32) * 2); free(offsets); return Success; } @@ -1031,19 +943,11 @@ ProcXvListImageFormats(ClientPtr client) int payload_size = pPort->pAdaptor->nImages * sz_xvImageFormatInfo; xvListImageFormatsReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, .num_formats = pPort->pAdaptor->nImages, .length = bytes_to_int32(payload_size) }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.num_formats); - } - - WriteToClient(client, sizeof(rep), &rep); + REPLY_FIELD_CARD32(num_formats); pImage = pPort->pAdaptor->pImages; @@ -1074,26 +978,12 @@ ProcXvListImageFormats(ClientPtr client) memcpy(&info[i].comp_order, pImage->component_order, 32); info[i].scanline_order = pImage->scanline_order; - if (client->swapped) { - swapl(&info[i].id); - swapl(&info[i].red_mask); - swapl(&info[i].green_mask); - swapl(&info[i].blue_mask); - swapl(&info[i].y_sample_bits); - swapl(&info[i].u_sample_bits); - swapl(&info[i].v_sample_bits); - swapl(&info[i].horz_y_period); - swapl(&info[i].horz_u_period); - swapl(&info[i].horz_v_period); - swapl(&info[i].vert_y_period); - swapl(&info[i].vert_u_period); - swapl(&info[i].vert_v_period); - } + CLIENT_STRUCT_CARD32_5(&info[i], id, red_mask, green_mask, blue_mask, y_sample_bits); + CLIENT_STRUCT_CARD32_4(&info[i], u_sample_bits, v_sample_bits, horz_y_period, horz_u_period); + CLIENT_STRUCT_CARD32_4(&info[i], horz_v_period, vert_y_period, vert_u_period, vert_v_period); } - if (sizeof(info)) - WriteToClient(client, sizeof(info), info); - + REPLY_SEND_EXTRA(info, sizeof(info)); return Success; }