Browse Source

vncRandRDisableOutput: Disable only the requested output

This only matters when using clones, which we do not accept yet. This
patch is for completeness and to avoid future surprises.
tags/v1.8.90
Peter Åstrand (astrand) 6 years ago
parent
commit
4237025936
1 changed files with 26 additions and 1 deletions
  1. 26
    1
      unix/xserver/hw/vnc/RandrGlue.c

+ 26
- 1
unix/xserver/hw/vnc/RandrGlue.c View File

@@ -177,12 +177,37 @@ int vncRandRDisableOutput(int outputIdx)
{
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)

Loading…
Cancel
Save