aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Weil <sw@weilnetz.de>2012-04-28 21:16:21 +0200
committerBlue Swirl <blauwirbel@gmail.com>2012-05-01 10:45:43 +0000
commit1b296044b6fa46757f755c86e05ed3bf99d78f26 (patch)
tree6e494fa2aebc5aeaee6ebab2954d6d29b6e819d3
parentfd06257351683ba24ebebd9793df3fd0fb59988e (diff)
downloadqemu-1b296044b6fa46757f755c86e05ed3bf99d78f26.zip
qemu-1b296044b6fa46757f755c86e05ed3bf99d78f26.tar.gz
qemu-1b296044b6fa46757f755c86e05ed3bf99d78f26.tar.bz2
vga: Don't switch to 1 x 1 character text screen
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>
-rw-r--r--hw/vga.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/hw/vga.c b/hw/vga.c
index f80860c..5824f85 100644
--- 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;