|
@@ -1035,9 +1035,26 @@ static void qemu_spice_display_init_one(QemuConsole *con)
|
|
|
|
|
|
void qemu_spice_display_init(void)
|
|
void qemu_spice_display_init(void)
|
|
{
|
|
{
|
|
- QemuConsole *con;
|
|
|
|
|
|
+ QemuOptsList *olist = qemu_find_opts("spice");
|
|
|
|
+ QemuOpts *opts = QTAILQ_FIRST(&olist->head);
|
|
|
|
+ QemuConsole *spice_con, *con;
|
|
|
|
+ const char *str;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
|
|
+ str = qemu_opt_get(opts, "display");
|
|
|
|
+ if (str) {
|
|
|
|
+ int head = qemu_opt_get_number(opts, "head", 0);
|
|
|
|
+ Error *err = NULL;
|
|
|
|
+
|
|
|
|
+ spice_con = qemu_console_lookup_by_device_name(str, head, &err);
|
|
|
|
+ if (err) {
|
|
|
|
+ error_report("Failed to lookup display/head");
|
|
|
|
+ exit(1);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ spice_con = NULL;
|
|
|
|
+ }
|
|
|
|
+
|
|
for (i = 0;; i++) {
|
|
for (i = 0;; i++) {
|
|
con = qemu_console_lookup_by_index(i);
|
|
con = qemu_console_lookup_by_index(i);
|
|
if (!con || !qemu_console_is_graphic(con)) {
|
|
if (!con || !qemu_console_is_graphic(con)) {
|
|
@@ -1046,6 +1063,9 @@ void qemu_spice_display_init(void)
|
|
if (qemu_spice_have_display_interface(con)) {
|
|
if (qemu_spice_have_display_interface(con)) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
+ if (spice_con != NULL && spice_con != con) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
qemu_spice_display_init_one(con);
|
|
qemu_spice_display_init_one(con);
|
|
}
|
|
}
|
|
}
|
|
}
|