aboutsummaryrefslogtreecommitdiff
path: root/vgasrc
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2018-06-22 08:43:04 +0200
committerGerd Hoffmann <kraxel@redhat.com>2018-06-26 09:16:31 +0200
commit69ea6dabeba4e080fc916a6bc9a2d53ffb4f916c (patch)
treef556df890e74a80c7ed17f3adf6fab7613fdb7f9 /vgasrc
parentd9a8b867a3af8090290b69b8f94b24e7fba9e504 (diff)
downloadseabios-hppa-69ea6dabeba4e080fc916a6bc9a2d53ffb4f916c.zip
seabios-hppa-69ea6dabeba4e080fc916a6bc9a2d53ffb4f916c.tar.gz
seabios-hppa-69ea6dabeba4e080fc916a6bc9a2d53ffb4f916c.tar.bz2
cbvga_set_mode: refine clear display logic
There is no need to skip text mode clearing. Clearing the framebuffer should be safe on legacy calls too. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'vgasrc')
-rw-r--r--vgasrc/cbvga.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/vgasrc/cbvga.c b/vgasrc/cbvga.c
index f6ebe71..859524c 100644
--- a/vgasrc/cbvga.c
+++ b/vgasrc/cbvga.c
@@ -201,18 +201,20 @@ cbvga_set_mode(struct vgamode_s *vmode_g, int flags)
*/
u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
- if (!(flags & MF_NOCLEARMEM) && extra_stack) {
+ if (!(flags & MF_NOCLEARMEM)) {
if (GET_GLOBAL(CBmodeinfo.memmodel) == MM_TEXT) {
memset16_far(SEG_CTEXT, (void*)0, 0x0720, 80*25*2);
return 0;
}
- struct gfx_op op;
- init_gfx_op(&op, &CBmodeinfo);
- op.x = op.y = 0;
- op.xlen = GET_GLOBAL(CBmodeinfo.width);
- op.ylen = GET_GLOBAL(CBmodeinfo.height);
- op.op = GO_MEMSET;
- handle_gfx_op(&op);
+ if (extra_stack || flags & MF_LEGACY) {
+ struct gfx_op op;
+ init_gfx_op(&op, &CBmodeinfo);
+ op.x = op.y = 0;
+ op.xlen = GET_GLOBAL(CBmodeinfo.width);
+ op.ylen = GET_GLOBAL(CBmodeinfo.height);
+ op.op = GO_MEMSET;
+ handle_gfx_op(&op);
+ }
}
return 0;
}