aboutsummaryrefslogtreecommitdiff
path: root/ui/spice-display.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui/spice-display.c')
-rw-r--r--ui/spice-display.c35
1 files changed, 12 insertions, 23 deletions
diff --git a/ui/spice-display.c b/ui/spice-display.c
index 19632fdf6c..0178d5766d 100644
--- a/ui/spice-display.c
+++ b/ui/spice-display.c
@@ -672,30 +672,19 @@ static int interface_client_monitors_config(QXLInstance *sin,
return 1;
}
- memset(&info, 0, sizeof(info));
-
- if (mc->num_of_monitors == 1) {
- /*
- * New spice-server version which filters the list of monitors
- * to only include those that belong to our display channel.
- *
- * single-head configuration (where filtering doesn't matter)
- * takes this code path too.
- */
- info.width = mc->monitors[0].width;
- info.height = mc->monitors[0].height;
- } else {
- /*
- * Old spice-server which gives us all monitors, so we have to
- * figure ourself which entry we need. Array index is the
- * channel_id, which is the qemu console index, see
- * qemu_spice_add_display_interface().
- */
- head = qemu_console_get_index(ssd->dcl.con);
- if (mc->num_of_monitors > head) {
- info.width = mc->monitors[head].width;
- info.height = mc->monitors[head].height;
+ info = *dpy_get_ui_info(ssd->dcl.con);
+
+ head = qemu_console_get_index(ssd->dcl.con);
+ if (mc->num_of_monitors > head) {
+ 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];
+ 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);