Message ID | 20200925135057.291556-6-marcandre.lureau@redhat.com |
---|---|
State | New |
Headers | show |
Series | Add physical display dimensions to spice/virtio-gpu | expand |
> > From: Marc-André Lureau <marcandre.lureau@redhat.com> > > Note that for consistency, we use the same logic as MonitorsConfig to > figure out the associated monitor. However, I can't find traces of the > discussion/patches about the "new spice-server" behaviour: it still uses > the multiple-configurations path in git master. > This part is now obsolete. > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > include/ui/console.h | 3 +++ > ui/spice-display.c | 9 +++++++++ > 2 files changed, 12 insertions(+) > > diff --git a/include/ui/console.h b/include/ui/console.h > index 353d2e49a1..e7303d8b98 100644 > --- a/include/ui/console.h > +++ b/include/ui/console.h > @@ -119,6 +119,9 @@ typedef struct DisplaySurface { > } DisplaySurface; > > typedef struct QemuUIInfo { > + /* physical dimension */ > + uint16_t width_mm; > + uint16_t height_mm; > /* geometry */ > int xoff; > int yoff; > diff --git a/ui/spice-display.c b/ui/spice-display.c > index b304c13149..a10f72bc5c 100644 > --- a/ui/spice-display.c > +++ b/ui/spice-display.c > @@ -679,7 +679,16 @@ static int interface_client_monitors_config(QXLInstance > *sin, > info.width = mc->monitors[head].width; > info.height = mc->monitors[head].height; > } > +#if SPICE_SERVER_VERSION >= 0x000e04 /* release 0.14.4 */ > + if (mc->flags & VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE) { > + VDAgentMonitorMM *mm = (void *)&mc->monitors[mc->num_of_monitors]; > > + if (mc->num_of_monitors > head) { This check is the same of above. Won't be better to move al these block inside the above if block and remove here? > + info.width_mm = mm[head].width; > + info.height_mm = mm[head].height; > + } > + } > +#endif > trace_qemu_spice_ui_info(ssd->qxl.id, info.width, info.height); > dpy_set_ui_info(ssd->dcl.con, &info); > return 1; Frediano
diff --git a/include/ui/console.h b/include/ui/console.h index 353d2e49a1..e7303d8b98 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -119,6 +119,9 @@ typedef struct DisplaySurface { } DisplaySurface; typedef struct QemuUIInfo { + /* physical dimension */ + uint16_t width_mm; + uint16_t height_mm; /* geometry */ int xoff; int yoff; diff --git a/ui/spice-display.c b/ui/spice-display.c index b304c13149..a10f72bc5c 100644 --- a/ui/spice-display.c +++ b/ui/spice-display.c @@ -679,7 +679,16 @@ static int interface_client_monitors_config(QXLInstance *sin, info.width = mc->monitors[head].width; info.height = mc->monitors[head].height; } +#if SPICE_SERVER_VERSION >= 0x000e04 /* release 0.14.4 */ + if (mc->flags & VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE) { + VDAgentMonitorMM *mm = (void *)&mc->monitors[mc->num_of_monitors]; + if (mc->num_of_monitors > head) { + info.width_mm = mm[head].width; + info.height_mm = mm[head].height; + } + } +#endif trace_qemu_spice_ui_info(ssd->qxl.id, info.width, info.height); dpy_set_ui_info(ssd->dcl.con, &info); return 1;