{
rrScrPrivPtr rp = rrGetScrPriv(screenInfo.screens[scrIdx]);
RRCrtcPtr crtc;
+ int i;
+ RROutputPtr *outputs;
+ int numOutputs = 0;
+ RRModePtr mode;
+ int ret;
crtc = rp->outputs[outputIdx]->crtc;
if (crtc == NULL)
return 1;
- return RRCrtcSet(crtc, NULL, crtc->x, crtc->y, crtc->rotation, 0, NULL);
+ /* Remove this output from the CRTC configuration */
+ outputs = malloc(crtc->numOutputs * sizeof(RROutputPtr));
+ if (!outputs) {
+ return 0;
+ }
+
+ for (i = 0; i < crtc->numOutputs; i++) {
+ if (rp->outputs[outputIdx] != crtc->outputs[i]) {
+ outputs[numOutputs++] = crtc->outputs[i];
+ }
+ }
+
+ if (numOutputs == 0) {
+ mode = NULL;
+ } else {
+ mode = crtc->mode;
+ }
+
+ ret = RRCrtcSet(crtc, mode, crtc->x, crtc->y, crtc->rotation, numOutputs, outputs);
+ free(outputs);
+ return ret;
}
unsigned int vncRandRGetOutputId(int outputIdx)