randr: Mangle GetScreenResources sort order based on primary output

This commit is contained in:
Adam Jackson 2008-12-08 17:37:17 -05:00
parent d7b316e82b
commit cdcb516e56

View File

@ -324,7 +324,7 @@ rrGetScreenResources(ClientPtr client, Bool query)
rrScrPrivPtr pScrPriv; rrScrPrivPtr pScrPriv;
CARD8 *extra; CARD8 *extra;
unsigned long extraLen; unsigned long extraLen;
int i, n, rc; int i, n, rc, has_primary;
RRCrtc *crtcs; RRCrtc *crtcs;
RROutput *outputs; RROutput *outputs;
xRRModeInfo *modeinfos; xRRModeInfo *modeinfos;
@ -402,11 +402,22 @@ rrGetScreenResources(ClientPtr client, Bool query)
modeinfos = (xRRModeInfo *) (outputs + pScrPriv->numOutputs); modeinfos = (xRRModeInfo *) (outputs + pScrPriv->numOutputs);
names = (CARD8 *) (modeinfos + num_modes); names = (CARD8 *) (modeinfos + num_modes);
has_primary = (pScrPriv->primaryOutput != NULL);
if (pScrPriv->primaryOutput)
{
crtcs[0] = pScrPriv->primaryOutput->id;
if (client->swapped)
swapl (&crtcs[0], n);
}
for (i = 0; i < pScrPriv->numCrtcs; i++) for (i = 0; i < pScrPriv->numCrtcs; i++)
{ {
crtcs[i] = pScrPriv->crtcs[i]->id; if (pScrPriv->primaryOutput &&
pScrPriv->primaryOutput->crtc == pScrPriv->crtcs[i])
continue;
crtcs[i + has_primary] = pScrPriv->crtcs[i]->id;
if (client->swapped) if (client->swapped)
swapl (&crtcs[i], n); swapl (&crtcs[i + has_primary], n);
} }
for (i = 0; i < pScrPriv->numOutputs; i++) for (i = 0; i < pScrPriv->numOutputs; i++)