diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c index cf66f8ef9b6762fc20d198962a99a8a4aefb4412..cf149768fd3d8474e144f339c656a9d2bcfaad1f 100644 --- a/randr/rrcrtc.c +++ b/randr/rrcrtc.c @@ -709,6 +709,25 @@ rrCheckPixmapBounding(ScreenPtr pScreen, return TRUE; } +#define XRANDR_EMULATION_PROP "RANDR Emulation" +static Bool +rrCheckEmulated(RROutputPtr output) +{ + const char *emulStr = XRANDR_EMULATION_PROP; + Atom emulProp; + RRPropertyValuePtr val; + + emulProp = MakeAtom(emulStr, strlen(emulStr), FALSE); + if (emulProp == None) + return FALSE; + + val = RRGetOutputProperty(output, emulProp, TRUE); + if (val && val->data) + return !!val->data; + + return FALSE; +} + /* * Request that the Crtc be reconfigured */ @@ -728,9 +747,11 @@ RRCrtcSet(RRCrtcPtr crtc, crtcChanged = FALSE; for (o = 0; o < numOutputs; o++) { - if (outputs[o] && outputs[o]->crtc != crtc) { - crtcChanged = TRUE; - break; + if (outputs[o]) { + if (rrCheckEmulated(outputs[o]) || (outputs[o]->crtc != crtc)) { + crtcChanged = TRUE; + break; + } } }