mirror of https://github.com/xemu-project/xemu.git
ui/console: fix qemu_console_resize() regression
The display may be corrupted when changing screen colour depth in
qemu-system-ppc/MacOS since 7.0.
Do not short-cut qemu_console_resize() if the surface is backed by vga
vram. When the scanout isn't set, or it is already allocated, or opengl,
and the size is fitting, we still avoid the reallocation & replace path.
Fixes: commit cb8962c1
("ui: do not create a surface when resizing a GL scanout")
Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-Id: <20220725115815.2461322-1-marcandre.lureau@redhat.com>
This commit is contained in:
parent
f0caba4475
commit
88738ea40b
|
@ -2575,11 +2575,13 @@ static void vc_chr_open(Chardev *chr,
|
||||||
|
|
||||||
void qemu_console_resize(QemuConsole *s, int width, int height)
|
void qemu_console_resize(QemuConsole *s, int width, int height)
|
||||||
{
|
{
|
||||||
DisplaySurface *surface;
|
DisplaySurface *surface = qemu_console_surface(s);
|
||||||
|
|
||||||
assert(s->console_type == GRAPHIC_CONSOLE);
|
assert(s->console_type == GRAPHIC_CONSOLE);
|
||||||
|
|
||||||
if (qemu_console_get_width(s, -1) == width &&
|
if ((s->scanout.kind != SCANOUT_SURFACE ||
|
||||||
|
(surface && surface->flags & QEMU_ALLOCATED_FLAG)) &&
|
||||||
|
qemu_console_get_width(s, -1) == width &&
|
||||||
qemu_console_get_height(s, -1) == height) {
|
qemu_console_get_height(s, -1) == height) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue