spice: delay starting until display are initialized
QEMU used to run qemu_spice.display_init() before vm_start(), and QXL/display interfaces where started then. Now, vm_start() happens before QXL/display interfaces are added and Spice server doesn't automatically start them in this case (fixed in spice git) Fixes Spice regression introduced after 5.2, with refactoring commitsb4e1a34211
("vl: remove separate preconfig main_loop") andfacf7c60ee
("vl: initialize displays _after_ exiting preconfiguration"), probably others. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20210129152351.161971-1-marcandre.lureau@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
b577ab2dda
commit
a652b12013
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
void qemu_spice_input_init(void);
|
void qemu_spice_input_init(void);
|
||||||
void qemu_spice_display_init(void);
|
void qemu_spice_display_init(void);
|
||||||
|
void qemu_spice_display_init_done(void);
|
||||||
bool qemu_spice_have_display_interface(QemuConsole *con);
|
bool qemu_spice_have_display_interface(QemuConsole *con);
|
||||||
int qemu_spice_add_display_interface(QXLInstance *qxlin, QemuConsole *con);
|
int qemu_spice_add_display_interface(QXLInstance *qxlin, QemuConsole *con);
|
||||||
int qemu_spice_migrate_info(const char *hostname, int port, int tls_port,
|
int qemu_spice_migrate_info(const char *hostname, int port, int tls_port,
|
||||||
|
@ -625,6 +625,14 @@ static void vm_change_state_handler(void *opaque, int running,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void qemu_spice_display_init_done(void)
|
||||||
|
{
|
||||||
|
if (runstate_is_running()) {
|
||||||
|
qemu_spice_display_start();
|
||||||
|
}
|
||||||
|
qemu_add_vm_change_state_handler(vm_change_state_handler, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void qemu_spice_init(void)
|
static void qemu_spice_init(void)
|
||||||
{
|
{
|
||||||
QemuOpts *opts = QTAILQ_FIRST(&qemu_spice_opts.head);
|
QemuOpts *opts = QTAILQ_FIRST(&qemu_spice_opts.head);
|
||||||
@ -796,7 +804,6 @@ static void qemu_spice_init(void)
|
|||||||
|
|
||||||
qemu_spice_input_init();
|
qemu_spice_input_init();
|
||||||
|
|
||||||
qemu_add_vm_change_state_handler(vm_change_state_handler, NULL);
|
|
||||||
qemu_spice_display_stop();
|
qemu_spice_display_stop();
|
||||||
|
|
||||||
g_free(x509_key_file);
|
g_free(x509_key_file);
|
||||||
|
@ -1188,4 +1188,6 @@ void qemu_spice_display_init(void)
|
|||||||
}
|
}
|
||||||
qemu_spice_display_init_one(con);
|
qemu_spice_display_init_one(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qemu_spice_display_init_done();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user