diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2021-08-10 14:00:39 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2021-08-10 14:00:39 +0100 |
commit | 02b8aeede2c61530b137bdb63cf7c998bae657f9 (patch) | |
tree | bc4bccd55df995e6c76298dfcbff958ca46292a0 | |
parent | 1f3afa5da2be7469655e88611406226c6c6eb148 (diff) | |
parent | 6ff5b5d6d521001135d1bd5c609e8834099f01d8 (diff) |
Merge remote-tracking branch 'remotes/kraxel/tags/fixes-20210810-pull-request' into staging
fixes for gtk, sdl and audio live migration.
# gpg: Signature made Tue 10 Aug 2021 13:18:30 BST
# gpg: using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
# gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
# gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
# Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138
* remotes/kraxel/tags/fixes-20210810-pull-request:
ui/sdl2: Check return value from g_setenv()
audio: Never send migration section
ui/gtk: retry sending VTE console input
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | audio/audio.c | 10 | ||||
-rw-r--r-- | ui/gtk.c | 10 | ||||
-rw-r--r-- | ui/sdl2.c | 5 |
3 files changed, 18 insertions, 7 deletions
diff --git a/audio/audio.c b/audio/audio.c index 59453ef856..54a153c0ef 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1622,10 +1622,20 @@ void audio_cleanup(void) } } +static bool vmstate_audio_needed(void *opaque) +{ + /* + * Never needed, this vmstate only exists in case + * an old qemu sends it to us. + */ + return false; +} + static const VMStateDescription vmstate_audio = { .name = "audio", .version_id = 1, .minimum_version_id = 1, + .needed = vmstate_audio_needed, .fields = (VMStateField[]) { VMSTATE_END_OF_LIST() } @@ -1646,16 +1646,14 @@ static void gd_vc_send_chars(VirtualConsole *vc) len = qemu_chr_be_can_write(vc->vte.chr); avail = fifo8_num_used(&vc->vte.out_fifo); - if (len > avail) { - len = avail; - } - while (len > 0) { + while (len > 0 && avail > 0) { const uint8_t *buf; uint32_t size; - buf = fifo8_pop_buf(&vc->vte.out_fifo, len, &size); + buf = fifo8_pop_buf(&vc->vte.out_fifo, MIN(len, avail), &size); qemu_chr_be_write(vc->vte.chr, (uint8_t *)buf, size); - len -= size; + len = qemu_chr_be_can_write(vc->vte.chr); + avail -= size; } } @@ -817,7 +817,10 @@ static void sdl2_display_init(DisplayState *ds, DisplayOptions *o) * This is a bit hackish but saves us from bigger problem. * Maybe it's a good idea to fix this in SDL instead. */ - g_setenv("SDL_VIDEODRIVER", "x11", 0); + if (!g_setenv("SDL_VIDEODRIVER", "x11", 0)) { + fprintf(stderr, "Could not set SDL_VIDEODRIVER environment variable\n"); + exit(1); + } #endif if (SDL_Init(SDL_INIT_VIDEO)) { |