diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2015-05-29 10:17:48 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-05-29 10:17:49 +0100 |
commit | ba7c388963e099c0d2cedb7f048e30747ffff25d (patch) | |
tree | 0740800947805e1441b9f36953d3300afdcb47ee | |
parent | ce0274f730eacbd24c706523ddbbabb6b95d0659 (diff) | |
parent | f7a8beb5e6a13dc924895244777d9ef08b23b367 (diff) | |
download | hqemu-ba7c388963e099c0d2cedb7f048e30747ffff25d.zip hqemu-ba7c388963e099c0d2cedb7f048e30747ffff25d.tar.gz |
Merge remote-tracking branch 'remotes/spice/tags/pull-spice-20150529-1' into staging
spice: misc fixes.
# gpg: Signature made Fri May 29 09:16:29 2015 BST using RSA key ID D3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
# gpg: aka "Gerd Hoffmann <gerd@kraxel.org>"
# gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
* remotes/spice/tags/pull-spice-20150529-1:
spice: fix spice_chr_add_watch() pre-condition
spice: don't update mm_time when spice-server is stopped.
spice-char: notify the server when chardev is writable
virtio-console: notify chardev when writable
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | hw/char/virtio-console.c | 10 | ||||
-rw-r--r-- | hw/display/qxl.c | 4 | ||||
-rw-r--r-- | spice-qemu-char.c | 13 | ||||
-rw-r--r-- | ui/spice-core.c | 1 |
4 files changed, 27 insertions, 1 deletions
diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index 752ed2c..2a867cb 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -95,6 +95,15 @@ static void set_guest_connected(VirtIOSerialPort *port, int guest_connected) } } +static void guest_writable(VirtIOSerialPort *port) +{ + VirtConsole *vcon = VIRTIO_CONSOLE(port); + + if (vcon->chr) { + qemu_chr_accept_input(vcon->chr); + } +} + /* Readiness of the guest to accept data on a port */ static int chr_can_read(void *opaque) { @@ -188,6 +197,7 @@ static void virtserialport_class_init(ObjectClass *klass, void *data) k->unrealize = virtconsole_unrealize; k->have_data = flush_buf; k->set_guest_connected = set_guest_connected; + k->guest_writable = guest_writable; dc->props = virtserialport_properties; } diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 8f40dfb..b220e2d 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -504,6 +504,10 @@ static void interface_set_mm_time(QXLInstance *sin, uint32_t mm_time) { PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl); + if (!qemu_spice_display_is_running(&qxl->ssd)) { + return; + } + trace_qxl_interface_set_mm_time(qxl->id, mm_time); qxl->shadow_rom.mm_clock = cpu_to_le32(mm_time); qxl->rom->mm_clock = cpu_to_le32(mm_time); diff --git a/spice-qemu-char.c b/spice-qemu-char.c index a4f4e57..d41bb74 100644 --- a/spice-qemu-char.c +++ b/spice-qemu-char.c @@ -110,6 +110,9 @@ static SpiceCharDeviceInterface vmc_interface = { #if SPICE_SERVER_VERSION >= 0x000c02 .event = vmc_event, #endif +#if SPICE_SERVER_VERSION >= 0x000c06 + .flags = SPICE_CHAR_DEVICE_NOTIFY_WRITABLE, +#endif }; @@ -169,7 +172,7 @@ static GSource *spice_chr_add_watch(CharDriverState *chr, GIOCondition cond) SpiceCharDriver *scd = chr->opaque; SpiceCharSource *src; - assert(cond == G_IO_OUT); + assert(cond & G_IO_OUT); src = (SpiceCharSource *)g_source_new(&SpiceCharSourceFuncs, sizeof(SpiceCharSource)); @@ -260,6 +263,13 @@ static void print_allowed_subtypes(void) fprintf(stderr, "\n"); } +static void spice_chr_accept_input(struct CharDriverState *chr) +{ + SpiceCharDriver *s = chr->opaque; + + spice_server_char_device_wakeup(&s->sin); +} + static CharDriverState *chr_open(const char *subtype, void (*set_fe_open)(struct CharDriverState *, int)) @@ -279,6 +289,7 @@ static CharDriverState *chr_open(const char *subtype, chr->chr_set_fe_open = set_fe_open; chr->explicit_be_open = true; chr->chr_fe_event = spice_chr_fe_event; + chr->chr_accept_input = spice_chr_accept_input; QLIST_INSERT_HEAD(&spice_chars, s, next); diff --git a/ui/spice-core.c b/ui/spice-core.c index f00e074..2e8384e 100644 --- a/ui/spice-core.c +++ b/ui/spice-core.c @@ -804,6 +804,7 @@ void qemu_spice_init(void) qemu_spice_audio_init(); qemu_add_vm_change_state_handler(vm_change_state_handler, NULL); + qemu_spice_display_stop(); g_free(x509_key_file); g_free(x509_cert_file); |