When setting output state, leave output unchanged when setting to current.
This commit is contained in:
parent
d08718d8fd
commit
9f870e0aa1
|
@ -77,6 +77,7 @@ struct _rrMode {
|
||||||
int refcnt;
|
int refcnt;
|
||||||
xRRModeInfo mode;
|
xRRModeInfo mode;
|
||||||
char *name;
|
char *name;
|
||||||
|
void *devPrivate;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _rrCrtc {
|
struct _rrCrtc {
|
||||||
|
|
|
@ -88,7 +88,16 @@ RROutputSetClones (RROutputPtr output,
|
||||||
int numClones)
|
int numClones)
|
||||||
{
|
{
|
||||||
RROutputPtr *newClones;
|
RROutputPtr *newClones;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (numClones == output->numClones)
|
||||||
|
{
|
||||||
|
for (i = 0; i < numClones; i++)
|
||||||
|
if (output->clones[i] != clones[i])
|
||||||
|
break;
|
||||||
|
if (i == numClones)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
if (numClones)
|
if (numClones)
|
||||||
{
|
{
|
||||||
newClones = xalloc (numClones * sizeof (RROutputPtr));
|
newClones = xalloc (numClones * sizeof (RROutputPtr));
|
||||||
|
@ -112,6 +121,20 @@ RROutputSetModes (RROutputPtr output,
|
||||||
int numModes)
|
int numModes)
|
||||||
{
|
{
|
||||||
RRModePtr *newModes;
|
RRModePtr *newModes;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (numModes == output->numModes)
|
||||||
|
{
|
||||||
|
for (i = 0; i < numModes; i++)
|
||||||
|
if (output->modes[i] != modes[i])
|
||||||
|
break;
|
||||||
|
if (i == numModes)
|
||||||
|
{
|
||||||
|
for (i = 0; i < numModes; i++)
|
||||||
|
RRModeDestroy (modes[i]);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (numModes)
|
if (numModes)
|
||||||
{
|
{
|
||||||
|
@ -122,7 +145,11 @@ RROutputSetModes (RROutputPtr output,
|
||||||
else
|
else
|
||||||
newModes = NULL;
|
newModes = NULL;
|
||||||
if (output->modes)
|
if (output->modes)
|
||||||
|
{
|
||||||
|
for (i = 0; i < output->numModes; i++)
|
||||||
|
RRModeDestroy (output->modes[i]);
|
||||||
xfree (output->modes);
|
xfree (output->modes);
|
||||||
|
}
|
||||||
memcpy (newModes, modes, numModes * sizeof (RRModePtr));
|
memcpy (newModes, modes, numModes * sizeof (RRModePtr));
|
||||||
output->modes = newModes;
|
output->modes = newModes;
|
||||||
output->numModes = numModes;
|
output->numModes = numModes;
|
||||||
|
@ -136,7 +163,16 @@ RROutputSetCrtcs (RROutputPtr output,
|
||||||
int numCrtcs)
|
int numCrtcs)
|
||||||
{
|
{
|
||||||
RRCrtcPtr *newCrtcs;
|
RRCrtcPtr *newCrtcs;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (numCrtcs == output->numCrtcs)
|
||||||
|
{
|
||||||
|
for (i = 0; i < numCrtcs; i++)
|
||||||
|
if (output->crtcs[i] != crtcs[i])
|
||||||
|
break;
|
||||||
|
if (i == numCrtcs)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
if (numCrtcs)
|
if (numCrtcs)
|
||||||
{
|
{
|
||||||
newCrtcs = xalloc (numCrtcs * sizeof (RRCrtcPtr));
|
newCrtcs = xalloc (numCrtcs * sizeof (RRCrtcPtr));
|
||||||
|
@ -157,6 +193,8 @@ RROutputSetCrtcs (RROutputPtr output,
|
||||||
void
|
void
|
||||||
RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc)
|
RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc)
|
||||||
{
|
{
|
||||||
|
if (output->crtc == crtc)
|
||||||
|
return TRUE;
|
||||||
output->crtc = crtc;
|
output->crtc = crtc;
|
||||||
output->changed = TRUE;
|
output->changed = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -165,6 +203,8 @@ Bool
|
||||||
RROutputSetConnection (RROutputPtr output,
|
RROutputSetConnection (RROutputPtr output,
|
||||||
CARD8 connection)
|
CARD8 connection)
|
||||||
{
|
{
|
||||||
|
if (output->connection == connection)
|
||||||
|
return TRUE;
|
||||||
output->connection = connection;
|
output->connection = connection;
|
||||||
output->changed = TRUE;
|
output->changed = TRUE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -174,6 +214,9 @@ Bool
|
||||||
RROutputSetSubpixelOrder (RROutputPtr output,
|
RROutputSetSubpixelOrder (RROutputPtr output,
|
||||||
int subpixelOrder)
|
int subpixelOrder)
|
||||||
{
|
{
|
||||||
|
if (output->subpixelOrder == subpixelOrder)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
output->subpixelOrder = subpixelOrder;
|
output->subpixelOrder = subpixelOrder;
|
||||||
output->changed = TRUE;
|
output->changed = TRUE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user