Author: hbelusca
Date: Sun Oct 26 16:56:14 2014
New Revision: 65018

URL: http://svn.reactos.org/svn/reactos?rev=65018&view=rev
Log:
[NTVDM]: Temporarily fix for r65015 before a proper fix.

Modified:
    trunk/reactos/subsystems/ntvdm/bios/vidbios.c

Modified: trunk/reactos/subsystems/ntvdm/bios/vidbios.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/ntvdm/bios/vidbios.c?rev=65018&r1=65017&r2=65018&view=diff
==============================================================================
--- trunk/reactos/subsystems/ntvdm/bios/vidbios.c       [iso-8859-1] (original)
+++ trunk/reactos/subsystems/ntvdm/bios/vidbios.c       [iso-8859-1] Sun Oct 26 
16:56:14 2014
@@ -2296,8 +2296,15 @@
 {
     BYTE Page;
     COORD Resolution;
+    PVGA_REGISTERS VgaMode;
+
+    /*
+     * IBM standard modes do not clear the screen if the
+     * high bit of AL is set (EGA or higher only).
+     * See Ralf Brown: http://www.ctyme.com/intr/rb-0069.htm
+     * for more information.
+     */
     BOOLEAN DoNotClear = !!(ModeNumber & 0x80);
-    PVGA_REGISTERS VgaMode;
 
     /* Retrieve the real mode number and check its validity */
     ModeNumber &= 0x7F;
@@ -2308,8 +2315,13 @@
         return FALSE;
     }
 
-    /* Check if this is the same mode */
-    if (ModeNumber == Bda->VideoMode) return TRUE;
+    /* Check if this is the current mode */
+    if (ModeNumber == Bda->VideoMode)
+    {
+        /* Just clear the VGA memory if needed */
+        if (!DoNotClear) VgaClearMemory();
+        return TRUE;
+    }
 
     VgaMode = VideoModes[ModeNumber];
 
@@ -2320,12 +2332,7 @@
 
     VgaChangePalette(ModeNumber);
 
-    /*
-     * IBM standard modes do not clear the screen if the
-     * high bit of AL is set (EGA or higher only).
-     * See Ralf Brown: http://www.ctyme.com/intr/rb-0069.htm
-     * for more information.
-     */
+    /* Clear the VGA memory if needed */
     if (!DoNotClear) VgaClearMemory();
 
     // Bda->CrtModeControl;


Reply via email to