Hi, On Mon, Apr 02, 2018 at 04:22:11PM +0300, Uri Lublin wrote: > 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> Looks fine, Acked-by: Victor Toso <victortoso@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); I don't mind the current version > --- > 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
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel