Unlike virtual graphic cards, device-assigned graphic cards can have more than one crtc per output. Still we currently pick only a single crtc for each output (but looping over them to find an active one) Signed-off-by: Uri Lublin <uril@xxxxxxxxxx> --- changes since v1: - commit log changed (Christophe) - parenthesis + initialization (Victor) === BTW, I noticed that a smaller patch (not tested much) may also work. Use ->crtc instead of looping all ->crtcs[j] So basically - crtc = crtc_from_id(x11, x11->randr.outputs[i]->crtcs[0]); + crtc = crtc_from_id(x11, x11->randr.outputs[i]->crtc); --- src/vdagent/x11-randr.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/vdagent/x11-randr.c b/src/vdagent/x11-randr.c index aade5ca..803cf73 100644 --- a/src/vdagent/x11-randr.c +++ b/src/vdagent/x11-randr.c @@ -58,6 +58,10 @@ static XRRCrtcInfo *crtc_from_id(struct vdagent_x11 *x11, int id) { int i; + if (id == 0) { + return NULL; + } + for (i = 0 ; i < x11->randr.res->ncrtc ; ++i) { if (id == x11->randr.res->crtcs[i]) { return x11->randr.crtcs[i]; @@ -652,7 +656,6 @@ static VDAgentMonitorsConfig *get_current_mon_config(struct vdagent_x11 *x11) { int i, num_of_monitors = 0; XRRModeInfo *mode; - XRRCrtcInfo *crtc; XRRScreenResources *res = x11->randr.res; VDAgentMonitorsConfig *mon_config; @@ -663,12 +666,17 @@ static VDAgentMonitorsConfig *get_current_mon_config(struct vdagent_x11 *x11) } for (i = 0 ; i < res->noutput; i++) { + int j; + XRRCrtcInfo *crtc = NULL; + if (x11->randr.outputs[i]->ncrtc == 0) continue; /* Monitor disabled, already zero-ed by calloc */ - if (x11->randr.outputs[i]->ncrtc != 1) - goto error; + if (x11->randr.outputs[i]->crtc == 0) + continue; /* Monitor disabled */ - crtc = crtc_from_id(x11, x11->randr.outputs[i]->crtcs[0]); + for (j = 0; crtc == NULL && j < x11->randr.outputs[i]->ncrtc; j++) { + crtc = crtc_from_id(x11, x11->randr.outputs[i]->crtcs[j]); + } if (!crtc) goto error; -- 2.14.3 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel