diff mbox series

[v2,5/6] spice: get monitors physical dimension

Message ID 20200925135057.291556-6-marcandre.lureau@redhat.com
State New
Headers show
Series Add physical display dimensions to spice/virtio-gpu | expand

Commit Message

Marc-André Lureau Sept. 25, 2020, 1:50 p.m. UTC
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.

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(+)

Comments

Frediano Ziglio Sept. 26, 2020, 6:56 a.m. UTC | #1
> 

> 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 mbox series

Patch

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;