RandR working with old clients and old API.
This commit is contained in:
parent
2be1ac15ae
commit
afe5e9483b
|
@ -477,6 +477,7 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations)
|
||||||
if (!output)
|
if (!output)
|
||||||
return;
|
return;
|
||||||
RROutputSetCrtcs (output, &crtc, 1);
|
RROutputSetCrtcs (output, &crtc, 1);
|
||||||
|
RROutputSetCrtc (output, crtc);
|
||||||
RROutputSetConnection (output, RR_Connected);
|
RROutputSetConnection (output, RR_Connected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -552,8 +553,8 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations)
|
||||||
|
|
||||||
/* notice current mode */
|
/* notice current mode */
|
||||||
if (newMode)
|
if (newMode)
|
||||||
RRCrtcSet (output->crtc, newMode, 0, 0, pScrPriv->rotation,
|
RRCrtcNotify (output->crtc, newMode, 0, 0, pScrPriv->rotation,
|
||||||
1, &output);
|
1, &output);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -482,6 +482,9 @@ RROutputSetCrtcs (RROutputPtr output,
|
||||||
RRCrtcPtr *crtcs,
|
RRCrtcPtr *crtcs,
|
||||||
int numCrtcs);
|
int numCrtcs);
|
||||||
|
|
||||||
|
void
|
||||||
|
RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc);
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
RROutputSetConnection (RROutputPtr output,
|
RROutputSetConnection (RROutputPtr output,
|
||||||
CARD8 connection);
|
CARD8 connection);
|
||||||
|
|
|
@ -59,7 +59,13 @@ RRCrtcCreate (ScreenPtr pScreen,
|
||||||
crtc->numOutputs = 0;
|
crtc->numOutputs = 0;
|
||||||
crtc->changed = TRUE;
|
crtc->changed = TRUE;
|
||||||
crtc->devPrivate = devPrivate;
|
crtc->devPrivate = devPrivate;
|
||||||
|
|
||||||
|
if (!AddResource (crtc->id, RRCrtcType, (pointer) crtc))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
pScrPriv->crtcs = crtcs;
|
||||||
pScrPriv->crtcs[pScrPriv->numCrtcs++] = crtc;
|
pScrPriv->crtcs[pScrPriv->numCrtcs++] = crtc;
|
||||||
|
pScrPriv->changed = TRUE;
|
||||||
return crtc;
|
return crtc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,6 +171,16 @@ RRCrtcSet (RRCrtcPtr crtc,
|
||||||
ScreenPtr pScreen = crtc->pScreen;
|
ScreenPtr pScreen = crtc->pScreen;
|
||||||
rrScrPriv(pScreen);
|
rrScrPriv(pScreen);
|
||||||
|
|
||||||
|
/* See if nothing changed */
|
||||||
|
if (crtc->mode == mode &&
|
||||||
|
crtc->x == x &&
|
||||||
|
crtc->y == y &&
|
||||||
|
crtc->rotation == rotation &&
|
||||||
|
crtc->numOutputs == numOutputs &&
|
||||||
|
!memcmp (crtc->outputs, outputs, numOutputs * sizeof (RROutputPtr)))
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
#if RANDR_12_INTERFACE
|
#if RANDR_12_INTERFACE
|
||||||
if (pScrPriv->rrCrtcSet)
|
if (pScrPriv->rrCrtcSet)
|
||||||
{
|
{
|
||||||
|
|
|
@ -824,7 +824,7 @@ ProcRRSetCrtcConfig (ClientPtr client)
|
||||||
if (!crtc)
|
if (!crtc)
|
||||||
{
|
{
|
||||||
client->errorValue = stuff->crtc;
|
client->errorValue = stuff->crtc;
|
||||||
return RRErrorBase + BadCrtc;
|
return RRErrorBase + BadRRCrtc;
|
||||||
}
|
}
|
||||||
if (stuff->mode == None)
|
if (stuff->mode == None)
|
||||||
{
|
{
|
||||||
|
@ -838,7 +838,7 @@ ProcRRSetCrtcConfig (ClientPtr client)
|
||||||
if (!mode)
|
if (!mode)
|
||||||
{
|
{
|
||||||
client->errorValue = stuff->mode;
|
client->errorValue = stuff->mode;
|
||||||
return RRErrorBase + BadMode;
|
return RRErrorBase + BadRRMode;
|
||||||
}
|
}
|
||||||
if (numOutputs == 0)
|
if (numOutputs == 0)
|
||||||
return BadMatch;
|
return BadMatch;
|
||||||
|
@ -854,7 +854,7 @@ ProcRRSetCrtcConfig (ClientPtr client)
|
||||||
if (!outputs[i])
|
if (!outputs[i])
|
||||||
{
|
{
|
||||||
client->errorValue = outputIds[i];
|
client->errorValue = outputIds[i];
|
||||||
return RRErrorBase + BadOutput;
|
return RRErrorBase + BadRROutput;
|
||||||
}
|
}
|
||||||
/* validate crtc for this output */
|
/* validate crtc for this output */
|
||||||
for (j = 0; j < outputs[i]->numCrtcs; j++)
|
for (j = 0; j < outputs[i]->numCrtcs; j++)
|
||||||
|
|
|
@ -32,6 +32,7 @@ RRModeGet (ScreenPtr pScreen,
|
||||||
rrScrPriv (pScreen);
|
rrScrPriv (pScreen);
|
||||||
int i;
|
int i;
|
||||||
RRModePtr mode;
|
RRModePtr mode;
|
||||||
|
RRModePtr *modes;
|
||||||
|
|
||||||
for (i = 0; i < pScrPriv->numModes; i++)
|
for (i = 0; i < pScrPriv->numModes; i++)
|
||||||
{
|
{
|
||||||
|
@ -43,16 +44,34 @@ RRModeGet (ScreenPtr pScreen,
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mode = xalloc (sizeof (RRModeRec) + modeInfo->nameLength + 1);
|
mode = xalloc (sizeof (RRModeRec) + modeInfo->nameLength + 1);
|
||||||
|
if (!mode)
|
||||||
|
return NULL;
|
||||||
mode->refcnt = 1;
|
mode->refcnt = 1;
|
||||||
mode->mode = *modeInfo;
|
mode->mode = *modeInfo;
|
||||||
mode->name = (char *) (mode + 1);
|
mode->name = (char *) (mode + 1);
|
||||||
memcpy (mode->name, name, modeInfo->nameLength);
|
memcpy (mode->name, name, modeInfo->nameLength);
|
||||||
mode->name[modeInfo->nameLength] = '\0';
|
mode->name[modeInfo->nameLength] = '\0';
|
||||||
|
|
||||||
|
if (pScrPriv->numModes)
|
||||||
|
modes = xrealloc (pScrPriv->modes,
|
||||||
|
(pScrPriv->numModes + 1) * sizeof (RRModePtr));
|
||||||
|
else
|
||||||
|
modes = xalloc (sizeof (RRModePtr));
|
||||||
|
|
||||||
|
if (!modes)
|
||||||
|
{
|
||||||
|
xfree (mode);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
mode->id = FakeClientID(0);
|
mode->id = FakeClientID(0);
|
||||||
if (!AddResource (mode->id, RRModeType, (pointer) mode))
|
if (!AddResource (mode->id, RRModeType, (pointer) mode))
|
||||||
return NULL;
|
return NULL;
|
||||||
++mode->refcnt;
|
++mode->refcnt;
|
||||||
|
pScrPriv->modes = modes;
|
||||||
|
pScrPriv->modes[pScrPriv->numModes++] = mode;
|
||||||
pScrPriv->changed = TRUE;
|
pScrPriv->changed = TRUE;
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,7 @@ RROutputCreate (ScreenPtr pScreen,
|
||||||
output->name = (char *) (output + 1);
|
output->name = (char *) (output + 1);
|
||||||
output->nameLength = nameLength;
|
output->nameLength = nameLength;
|
||||||
memcpy (output->name, name, nameLength);
|
memcpy (output->name, name, nameLength);
|
||||||
|
output->name[nameLength] = '\0';
|
||||||
output->connection = RR_UnknownConnection;
|
output->connection = RR_UnknownConnection;
|
||||||
output->subpixelOrder = SubPixelUnknown;
|
output->subpixelOrder = SubPixelUnknown;
|
||||||
output->crtc = NULL;
|
output->crtc = NULL;
|
||||||
|
@ -67,7 +68,13 @@ RROutputCreate (ScreenPtr pScreen,
|
||||||
output->modes = NULL;
|
output->modes = NULL;
|
||||||
output->changed = TRUE;
|
output->changed = TRUE;
|
||||||
output->devPrivate = devPrivate;
|
output->devPrivate = devPrivate;
|
||||||
|
|
||||||
|
if (!AddResource (output->id, RROutputType, (pointer) output))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
pScrPriv->outputs = outputs;
|
||||||
pScrPriv->outputs[pScrPriv->numOutputs++] = output;
|
pScrPriv->outputs[pScrPriv->numOutputs++] = output;
|
||||||
|
pScrPriv->changed = TRUE;
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +96,7 @@ RROutputSetClones (RROutputPtr output,
|
||||||
memcpy (newClones, clones, numClones * sizeof (RROutputPtr));
|
memcpy (newClones, clones, numClones * sizeof (RROutputPtr));
|
||||||
output->clones = newClones;
|
output->clones = newClones;
|
||||||
output->numClones = numClones;
|
output->numClones = numClones;
|
||||||
|
output->changed = TRUE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,6 +115,7 @@ RROutputSetModes (RROutputPtr output,
|
||||||
memcpy (newModes, modes, numModes * sizeof (RRModePtr));
|
memcpy (newModes, modes, numModes * sizeof (RRModePtr));
|
||||||
output->modes = newModes;
|
output->modes = newModes;
|
||||||
output->numModes = numModes;
|
output->numModes = numModes;
|
||||||
|
output->changed = TRUE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,14 +134,23 @@ RROutputSetCrtcs (RROutputPtr output,
|
||||||
memcpy (newCrtcs, crtcs, numCrtcs * sizeof (RRCrtcPtr));
|
memcpy (newCrtcs, crtcs, numCrtcs * sizeof (RRCrtcPtr));
|
||||||
output->crtcs = newCrtcs;
|
output->crtcs = newCrtcs;
|
||||||
output->numCrtcs = numCrtcs;
|
output->numCrtcs = numCrtcs;
|
||||||
|
output->changed = TRUE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc)
|
||||||
|
{
|
||||||
|
output->crtc = crtc;
|
||||||
|
output->changed = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
RROutputSetConnection (RROutputPtr output,
|
RROutputSetConnection (RROutputPtr output,
|
||||||
CARD8 connection)
|
CARD8 connection)
|
||||||
{
|
{
|
||||||
output->connection = connection;
|
output->connection = connection;
|
||||||
|
output->changed = TRUE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue