summary refs log tree commit diff stats
path: root/ui/spice-core.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2021-01-29 19:23:51 +0400
committerGerd Hoffmann <kraxel@redhat.com>2021-02-04 14:32:40 +0100
commita652b120130e89850edb18cebd222310b77218f7 (patch)
treed24ecafa0e8a2ddaeb71f7b3aef9328b8f06d44a /ui/spice-core.c
parentb577ab2dda3afc7d6a7befabcf226507ff06c17c (diff)
downloadfocaccia-qemu-a652b120130e89850edb18cebd222310b77218f7.tar.gz
focaccia-qemu-a652b120130e89850edb18cebd222310b77218f7.zip
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 commits
b4e1a34211 ("vl: remove separate preconfig main_loop") and
facf7c60ee ("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>
Diffstat (limited to 'ui/spice-core.c')
-rw-r--r--ui/spice-core.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ui/spice-core.c b/ui/spice-core.c
index 514c0f9754..beee932f55 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -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)
 {
     QemuOpts *opts = QTAILQ_FIRST(&qemu_spice_opts.head);
@@ -796,7 +804,6 @@ static void qemu_spice_init(void)
 
     qemu_spice_input_init();
 
-    qemu_add_vm_change_state_handler(vm_change_state_handler, NULL);
     qemu_spice_display_stop();
 
     g_free(x509_key_file);