summaryrefslogtreecommitdiff
path: root/hw/xfree86/vbe/vbe.c
diff options
context:
space:
mode:
authorEgbert Eich <eich@suse.de>2005-05-18 15:38:50 +0000
committerEgbert Eich <eich@suse.de>2005-05-18 15:38:50 +0000
commitfddcde777f50611099d8888456d93be7e566c84e (patch)
tree7b3715f32a01b7a0f977764e1bb85efb56495a6e /hw/xfree86/vbe/vbe.c
parentf28d644d9fb1feeab1bbb3d5e68255bfa20905d8 (diff)
VBESetVBEMode() calls int10 0x4f02 to set a VBE video mode. This can be a
standard mode solely determined by the mode ID or it may be a detailed mode with almost arbitrary mode parameters. The mode parameters are passed to the BIOS in a memory area pointed to by es:di. If bit 11 in the video mode is set this memory area is evaluated. When we don't have such an area (passed to VBESetVBEMode() this function should unset this bit for sanity reasons. (Bugzilla #3329)
Diffstat (limited to 'hw/xfree86/vbe/vbe.c')
-rw-r--r--hw/xfree86/vbe/vbe.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c
index 33df80a92..7b55c1398 100644
--- a/hw/xfree86/vbe/vbe.c
+++ b/hw/xfree86/vbe/vbe.c
@@ -469,7 +469,8 @@ VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock *block)
memcpy(pVbe->memory, block, sizeof(VbeCRTCInfoBlock));
pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
- }
+ } else
+ pVbe->pInt10->bx &= ~(1 << 11);
xf86ExecX86int10(pVbe->pInt10);