mirror of
https://github.com/reactos/reactos.git
synced 2024-12-31 19:42:51 +00:00
[NTOSKRNL]
- Display boot blue bitmap when native application or kernel calls NtDisplayString with string displaying enabled - Fix drawing order in Phase1InitializationDiscard svn path=/trunk/; revision=52404
This commit is contained in:
parent
261c786603
commit
d5e9cb0dd8
3 changed files with 35 additions and 17 deletions
|
@ -1904,33 +1904,30 @@ Phase1InitializationDiscard(IN PVOID Context)
|
||||||
/* Initialize Power Subsystem in Phase 1*/
|
/* Initialize Power Subsystem in Phase 1*/
|
||||||
if (!PoInitSystem(1)) KeBugCheck(INTERNAL_POWER_ERROR);
|
if (!PoInitSystem(1)) KeBugCheck(INTERNAL_POWER_ERROR);
|
||||||
|
|
||||||
|
/* Update progress bar */
|
||||||
|
InbvUpdateProgressBar(90);
|
||||||
|
|
||||||
/* Initialize the Process Manager at Phase 1 */
|
/* Initialize the Process Manager at Phase 1 */
|
||||||
if (!PsInitSystem(LoaderBlock)) KeBugCheck(PROCESS1_INITIALIZATION_FAILED);
|
if (!PsInitSystem(LoaderBlock)) KeBugCheck(PROCESS1_INITIALIZATION_FAILED);
|
||||||
|
|
||||||
/* Update progress bar */
|
|
||||||
InbvUpdateProgressBar(85);
|
|
||||||
|
|
||||||
/* Make sure nobody touches the loader block again */
|
/* Make sure nobody touches the loader block again */
|
||||||
if (LoaderBlock == KeLoaderBlock) KeLoaderBlock = NULL;
|
if (LoaderBlock == KeLoaderBlock) KeLoaderBlock = NULL;
|
||||||
LoaderBlock = Context = NULL;
|
LoaderBlock = Context = NULL;
|
||||||
|
|
||||||
/* Update progress bar */
|
/* Update progress bar */
|
||||||
InbvUpdateProgressBar(90);
|
InbvUpdateProgressBar(100);
|
||||||
|
|
||||||
|
/* Clean the screen */
|
||||||
|
if (InbvBootDriverInstalled) FinalizeBootLogo();
|
||||||
|
|
||||||
|
/* Allow strings to be displayed */
|
||||||
|
InbvEnableDisplayString(TRUE);
|
||||||
|
|
||||||
/* Launch initial process */
|
/* Launch initial process */
|
||||||
DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
|
DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
|
||||||
ProcessInfo = &InitBuffer->ProcessInfo;
|
ProcessInfo = &InitBuffer->ProcessInfo;
|
||||||
ExpLoadInitialProcess(InitBuffer, &ProcessParameters, &Environment);
|
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 */
|
/* Wait 5 seconds for initial process to initialize */
|
||||||
Timeout.QuadPart = Int32x32To64(5, -10000000);
|
Timeout.QuadPart = Int32x32To64(5, -10000000);
|
||||||
Status = ZwWaitForSingleObject(ProcessInfo->ProcessHandle, FALSE, &Timeout);
|
Status = ZwWaitForSingleObject(ProcessInfo->ProcessHandle, FALSE, &Timeout);
|
||||||
|
|
|
@ -576,7 +576,7 @@ NtDisplayString(IN PUNICODE_STRING DisplayString)
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
INIT_FUNCTION
|
INIT_FUNCTION
|
||||||
DisplayBootBitmap(IN BOOLEAN SosMode)
|
DisplayBootBitmap(IN BOOLEAN TextMode)
|
||||||
{
|
{
|
||||||
PVOID Header, Band, Text, Screen;
|
PVOID Header, Band, Text, Screen;
|
||||||
ROT_BAR_TYPE TempRotBarSelection = RB_UNSPECIFIED;
|
ROT_BAR_TYPE TempRotBarSelection = RB_UNSPECIFIED;
|
||||||
|
@ -591,9 +591,9 @@ DisplayBootBitmap(IN BOOLEAN SosMode)
|
||||||
InbvReleaseLock();
|
InbvReleaseLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if this is SOS mode */
|
/* Check if this is text mode */
|
||||||
ShowProgressBar = FALSE;
|
ShowProgressBar = FALSE;
|
||||||
if (SosMode)
|
if (TextMode)
|
||||||
{
|
{
|
||||||
/* Check if this is a server OS */
|
/* Check if this is a server OS */
|
||||||
if (SharedUserData->NtProductType == NtProductWinNt)
|
if (SharedUserData->NtProductType == NtProductWinNt)
|
||||||
|
@ -696,6 +696,9 @@ DisplayBootBitmap(IN BOOLEAN SosMode)
|
||||||
|
|
||||||
/* Draw the progress bar bit */
|
/* Draw the progress bar bit */
|
||||||
// if (Bar) InbvBitBlt(Bar, 0, 0);
|
// if (Bar) InbvBitBlt(Bar, 0, 0);
|
||||||
|
|
||||||
|
/* Set filter which will draw text display if needed */
|
||||||
|
InbvInstallDisplayStringFilter(DisplayFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Do we have a system thread? */
|
/* Do we have a system thread? */
|
||||||
|
@ -709,6 +712,18 @@ DisplayBootBitmap(IN BOOLEAN SosMode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
INIT_FUNCTION
|
||||||
|
DisplayFilter(PCHAR *String)
|
||||||
|
{
|
||||||
|
/* Remove the filter */
|
||||||
|
InbvInstallDisplayStringFilter(NULL);
|
||||||
|
|
||||||
|
/* Draw text screen */
|
||||||
|
DisplayBootBitmap(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
INIT_FUNCTION
|
INIT_FUNCTION
|
||||||
|
|
|
@ -42,7 +42,13 @@ InbvEnableBootDriver(
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DisplayBootBitmap(
|
DisplayBootBitmap(
|
||||||
IN BOOLEAN SosMode
|
IN BOOLEAN TextMode
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
DisplayFilter(
|
||||||
|
IN PCHAR *String
|
||||||
);
|
);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
Loading…
Reference in a new issue