]> git.proxmox.com Git - qemu.git/commitdiff
vga: Don't switch to 1 x 1 character text screen
authorStefan Weil <sw@weilnetz.de>
Sat, 28 Apr 2012 19:16:21 +0000 (21:16 +0200)
committerBlue Swirl <blauwirbel@gmail.com>
Tue, 1 May 2012 10:45:43 +0000 (10:45 +0000)
Initially, vga_get_text_resolution returns a text resolution of 1 x 1
(vga register values are 0).

This is visible during MIPS Malta boot with SDL. It also occurs with the
i386 or x86_64 system emulation when it runs in single step mode:

QEMU changes the size of the SDL window to the smallest possible value
which is supported by the window manager. As this is not the calculated
size, QEMU switches to scaled mode. When the BIOS or the VGA driver sets
the normal text resolution, the window stays small and displays
microscopic characters.

Ignoring text resolutions of 1 x 1 or less avoids these problems.
A similar workaround already exists for too large resolutions.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
hw/vga.c

index f80860caed39cefdefd23bca2d61e1cced2b05cc..5824f85d043e17240115ac9f12eb7389ee629d27 100644 (file)
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -1327,6 +1327,10 @@ static void vga_draw_text(VGACommonState *s, int full_update)
     line_offset = s->line_offset;
 
     vga_get_text_resolution(s, &width, &height, &cw, &cheight);
+    if ((height * width) <= 1) {
+        /* better than nothing: exit if transient size is too small */
+        return;
+    }
     if ((height * width) > CH_ATTR_SIZE) {
         /* better than nothing: exit if transient size is too big */
         return;