]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
ui/console: Fix console resize with placeholder surface
authorTianlan Zhou <bobby825@126.com>
Wed, 7 Feb 2024 17:20:25 +0000 (01:20 +0800)
committerMichael Tokarev <mjt@tls.msk.ru>
Tue, 20 Feb 2024 15:49:47 +0000 (18:49 +0300)
In `qemu_console_resize()`, the old surface of the console is keeped if the new
console size is the same as the old one. If the old surface is a placeholder,
and the new size of console is the same as the placeholder surface (640*480),
the surface won't be replace.
In this situation, the surface's `QEMU_PLACEHOLDER_FLAG` flag is still set, so
the console won't be displayed in SDL display mode.
This patch fixes this problem by forcing a new surface if the old one is a
placeholder.

Signed-off-by: Tianlan Zhou <bobby825@126.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-ID: <20240207172024.8-1-bobby825@126.com>
(cherry picked from commit 95b08fee8f68d284a5028d37fd28be7a70c8e92b)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
ui/console.c

index 52414d6aa3ae36b758ef6e85413dfae348fa75f9..269cf27163df13fd1d867e07316a825c4ed9f05b 100644 (file)
@@ -2583,7 +2583,7 @@ void qemu_console_resize(QemuConsole *s, int width, int height)
     assert(s->console_type == GRAPHIC_CONSOLE);
 
     if ((s->scanout.kind != SCANOUT_SURFACE ||
-         (surface && surface->flags & QEMU_ALLOCATED_FLAG)) &&
+         (surface && !is_buffer_shared(surface) && !is_placeholder(surface))) &&
         qemu_console_get_width(s, -1) == width &&
         qemu_console_get_height(s, -1) == height) {
         return;