Revert "randr: ProcRRGetCrtcInfo(): use locally scoped variables"

This reverts commit 90abc95c85.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2012>
This commit is contained in:
Alan Coopersmith 2025-06-11 13:43:36 -07:00
parent c371d11af0
commit 9c53c6cf76

View File

@ -1148,19 +1148,28 @@ ProcRRGetCrtcInfo(ClientPtr client)
RRCrtcPtr crtc; RRCrtcPtr crtc;
CARD8 *extra = NULL; CARD8 *extra = NULL;
unsigned long extraLen = 0; unsigned long extraLen = 0;
ScreenPtr pScreen;
rrScrPrivPtr pScrPriv;
RRModePtr mode;
RROutput *outputs;
RROutput *possible;
int i, j, k;
int width, height;
BoxRec panned_area;
Bool leased;
REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq); REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq);
VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess);
Bool leased = RRCrtcIsLeased(crtc); leased = RRCrtcIsLeased(crtc);
/* All crtcs must be associated with screens before client /* All crtcs must be associated with screens before client
* requests are processed * requests are processed
*/ */
ScreenPtr pScreen = crtc->pScreen; pScreen = crtc->pScreen;
rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen); pScrPriv = rrGetScrPriv(pScreen);
RRModePtr mode = crtc->mode; mode = crtc->mode;
xRRGetCrtcInfoReply rep = { xRRGetCrtcInfoReply rep = {
.type = X_Reply, .type = X_Reply,
@ -1174,7 +1183,6 @@ ProcRRGetCrtcInfo(ClientPtr client)
rep.rotation = RR_Rotate_0; rep.rotation = RR_Rotate_0;
rep.rotations = RR_Rotate_0; rep.rotations = RR_Rotate_0;
} else { } else {
BoxRec panned_area;
if (pScrPriv->rrGetPanning && if (pScrPriv->rrGetPanning &&
pScrPriv->rrGetPanning(pScreen, crtc, &panned_area, NULL, NULL) && pScrPriv->rrGetPanning(pScreen, crtc, &panned_area, NULL, NULL) &&
(panned_area.x2 > panned_area.x1) && (panned_area.y2 > panned_area.y1)) (panned_area.x2 > panned_area.x1) && (panned_area.y2 > panned_area.y1))
@ -1185,7 +1193,6 @@ ProcRRGetCrtcInfo(ClientPtr client)
rep.height = panned_area.y2 - panned_area.y1; rep.height = panned_area.y2 - panned_area.y1;
} }
else { else {
int width, height;
RRCrtcGetScanoutSize(crtc, &width, &height); RRCrtcGetScanoutSize(crtc, &width, &height);
rep.x = crtc->x; rep.x = crtc->x;
rep.y = crtc->y; rep.y = crtc->y;
@ -1194,9 +1201,9 @@ ProcRRGetCrtcInfo(ClientPtr client)
} }
rep.mode = mode ? mode->mode.id : 0; rep.mode = mode ? mode->mode.id : 0;
rep.nOutput = crtc->numOutputs; rep.nOutput = crtc->numOutputs;
for (int i = 0; i < pScrPriv->numOutputs; i++) { for (i = 0; i < pScrPriv->numOutputs; i++) {
if (!RROutputIsLeased(pScrPriv->outputs[i])) { if (!RROutputIsLeased(pScrPriv->outputs[i])) {
for (int j = 0; j < pScrPriv->outputs[i]->numCrtcs; j++) for (j = 0; j < pScrPriv->outputs[i]->numCrtcs; j++)
if (pScrPriv->outputs[i]->crtcs[j] == crtc) if (pScrPriv->outputs[i]->crtcs[j] == crtc)
rep.nPossibleOutput++; rep.nPossibleOutput++;
} }
@ -1211,19 +1218,18 @@ ProcRRGetCrtcInfo(ClientPtr client)
return BadAlloc; return BadAlloc;
} }
RROutput *outputs = (RROutput *) extra; outputs = (RROutput *) extra;
RROutput *possible = (RROutput *) (outputs + rep.nOutput); possible = (RROutput *) (outputs + rep.nOutput);
for (int i = 0; i < crtc->numOutputs; i++) { for (i = 0; i < crtc->numOutputs; i++) {
outputs[i] = crtc->outputs[i]->id; outputs[i] = crtc->outputs[i]->id;
if (client->swapped) if (client->swapped)
swapl(&outputs[i]); swapl(&outputs[i]);
} }
k = 0;
int k = 0; for (i = 0; i < pScrPriv->numOutputs; i++) {
for (int i = 0; i < pScrPriv->numOutputs; i++) {
if (!RROutputIsLeased(pScrPriv->outputs[i])) { if (!RROutputIsLeased(pScrPriv->outputs[i])) {
for (int j = 0; j < pScrPriv->outputs[i]->numCrtcs; j++) for (j = 0; j < pScrPriv->outputs[i]->numCrtcs; j++)
if (pScrPriv->outputs[i]->crtcs[j] == crtc) { if (pScrPriv->outputs[i]->crtcs[j] == crtc) {
possible[k] = pScrPriv->outputs[i]->id; possible[k] = pScrPriv->outputs[i]->id;
if (client->swapped) if (client->swapped)