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;
+            }
         }
     }