[ros-diffs] [rharabien] 52404: [NTOSKRNL] - Display boot blue bitmap when native application or kernel calls NtDisplayString with string displaying enabled - Fix drawing order in Phase1InitializationDiscard

rharabien at svn.reactos.org rharabien at svn.reactos.org
Tue Jun 21 15:53:03 UTC 2011


Author: rharabien
Date: Tue Jun 21 15:53:02 2011
New Revision: 52404

URL: http://svn.reactos.org/svn/reactos?rev=52404&view=rev
Log:
[NTOSKRNL]
- Display boot blue bitmap when native application or kernel calls NtDisplayString with string displaying enabled
- Fix drawing order in Phase1InitializationDiscard

Modified:
    trunk/reactos/ntoskrnl/ex/init.c
    trunk/reactos/ntoskrnl/inbv/inbv.c
    trunk/reactos/ntoskrnl/include/internal/inbv.h

Modified: trunk/reactos/ntoskrnl/ex/init.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=52404&r1=52403&r2=52404&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ex/init.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ex/init.c [iso-8859-1] Tue Jun 21 15:53:02 2011
@@ -1904,32 +1904,29 @@
     /* Initialize Power Subsystem in Phase 1*/
     if (!PoInitSystem(1)) KeBugCheck(INTERNAL_POWER_ERROR);
 
+    /* Update progress bar */
+    InbvUpdateProgressBar(90);
+
     /* Initialize the Process Manager at Phase 1 */
     if (!PsInitSystem(LoaderBlock)) KeBugCheck(PROCESS1_INITIALIZATION_FAILED);
-
-    /* Update progress bar */
-    InbvUpdateProgressBar(85);
 
     /* Make sure nobody touches the loader block again */
     if (LoaderBlock == KeLoaderBlock) KeLoaderBlock = NULL;
     LoaderBlock = Context = NULL;
 
     /* Update progress bar */
-    InbvUpdateProgressBar(90);
+    InbvUpdateProgressBar(100);
+
+    /* Clean the screen */
+    if (InbvBootDriverInstalled) FinalizeBootLogo();
+
+    /* Allow strings to be displayed */
+    InbvEnableDisplayString(TRUE);
 
     /* Launch initial process */
     DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
     ProcessInfo = &InitBuffer->ProcessInfo;
     ExpLoadInitialProcess(InitBuffer, &ProcessParameters, &Environment);
-
-    /* Clean the screen */
-    if (InbvBootDriverInstalled) FinalizeBootLogo();
-
-    /* Update progress bar */
-    InbvUpdateProgressBar(100);
-
-    /* Allow strings to be displayed */
-    InbvEnableDisplayString(TRUE);
 
     /* Wait 5 seconds for initial process to initialize */
     Timeout.QuadPart = Int32x32To64(5, -10000000);

Modified: trunk/reactos/ntoskrnl/inbv/inbv.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/inbv/inbv.c?rev=52404&r1=52403&r2=52404&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/inbv/inbv.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/inbv/inbv.c [iso-8859-1] Tue Jun 21 15:53:02 2011
@@ -576,7 +576,7 @@
 VOID
 NTAPI
 INIT_FUNCTION
-DisplayBootBitmap(IN BOOLEAN SosMode)
+DisplayBootBitmap(IN BOOLEAN TextMode)
 {
     PVOID Header, Band, Text, Screen;
     ROT_BAR_TYPE TempRotBarSelection = RB_UNSPECIFIED;
@@ -591,9 +591,9 @@
         InbvReleaseLock();
     }
 
-    /* Check if this is SOS mode */
+    /* Check if this is text mode */
     ShowProgressBar = FALSE;
-    if (SosMode)
+    if (TextMode)
     {
         /* Check if this is a server OS */
         if (SharedUserData->NtProductType == NtProductWinNt)
@@ -696,6 +696,9 @@
           
           /* Draw the progress bar bit */
 //          if (Bar) InbvBitBlt(Bar, 0, 0);
+
+          /* Set filter which will draw text display if needed */
+          InbvInstallDisplayStringFilter(DisplayFilter);
     }
 
     /* Do we have a system thread? */
@@ -712,6 +715,18 @@
 VOID
 NTAPI
 INIT_FUNCTION
+DisplayFilter(PCHAR *String)
+{
+    /* Remove the filter */
+    InbvInstallDisplayStringFilter(NULL);
+    
+    /* Draw text screen */
+    DisplayBootBitmap(TRUE);
+}
+
+VOID
+NTAPI
+INIT_FUNCTION
 FinalizeBootLogo(VOID)
 {
     /* Acquire lock and check the display state */

Modified: trunk/reactos/ntoskrnl/include/internal/inbv.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/inbv.h?rev=52404&r1=52403&r2=52404&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/inbv.h [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/include/internal/inbv.h [iso-8859-1] Tue Jun 21 15:53:02 2011
@@ -42,7 +42,13 @@
 VOID
 NTAPI
 DisplayBootBitmap(
-    IN BOOLEAN SosMode
+    IN BOOLEAN TextMode
+);
+
+VOID
+NTAPI
+DisplayFilter(
+    IN PCHAR *String
 );
 
 VOID




More information about the Ros-diffs mailing list