|
@@ -674,10 +674,28 @@ static int interface_client_monitors_config(QXLInstance *sin,
|
|
|
|
|
|
memset(&info, 0, sizeof(info));
|
|
memset(&info, 0, sizeof(info));
|
|
|
|
|
|
- head = qemu_console_get_head(ssd->dcl.con);
|
|
|
|
- if (mc->num_of_monitors > head) {
|
|
|
|
- info.width = mc->monitors[head].width;
|
|
|
|
- info.height = mc->monitors[head].height;
|
|
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
trace_qemu_spice_ui_info(ssd->qxl.id, info.width, info.height);
|
|
trace_qemu_spice_ui_info(ssd->qxl.id, info.width, info.height);
|