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=5240... ============================================================================== --- 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=52... ============================================================================== --- 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/i... ============================================================================== --- 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