From 0d69c8378f8af2f53d61913ae0ff8b4db922f118 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Fri, 4 Apr 2008 15:12:11 +0000 Subject: [PATCH] On my system's BIOS / monitor there seems to be a race condition between grabbing the EDID info and setting the video mode. The result of this is a garbage display every other boot. By introducing a small wait before doing the mode set, it works every time. Will see if I can reduce the spin timer though with some more tests. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24794 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/boot/platform/bios_ia32/video.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/system/boot/platform/bios_ia32/video.cpp b/src/system/boot/platform/bios_ia32/video.cpp index 22aa8cb34c..9187270cd9 100644 --- a/src/system/boot/platform/bios_ia32/video.cpp +++ b/src/system/boot/platform/bios_ia32/video.cpp @@ -27,7 +27,7 @@ #include -//#define TRACE_VIDEO +#define TRACE_VIDEO #ifdef TRACE_VIDEO # define TRACE(x) dprintf x #else @@ -809,7 +809,11 @@ platform_switch_to_logo(void) if (sVesaCompatible && sMode != NULL) { if (!sModeChosen) get_mode_from_settings(); - + + // On some BIOS / chipset / monitor combinations, there seems to be a timing issue between + // getting the EDID data and setting the video mode. As such we wait here briefly to give + // everything enough time to settle. + spin(1000); if (vesa_set_mode(sMode->mode) != B_OK) goto fallback;