- Update boot graphics with new, RLE-compressed and palette-blacked versions from mf.
- Re-enable FreeLDR's "prepare for ros video" routine, but change it to match the new BootVid, which uses Mode 0x12. This is roughly what HalDisplayReset does, which isn't yet implemented (except the latter needs to setup a BIOS call trampoline). - Fix up some bugs in bootvid and inbv. - Implement SOS case of DisplayBootBitmap, and implement FinalizeBootLogo. Now bootvid starts to show its colors, but one .bmp is still buggy. svn path=/trunk/; revision=25751
|
@ -310,7 +310,7 @@ CreateFreeLoaderIniForDos(PWCHAR IniPath,
|
|||
NULL,
|
||||
INSERT_LAST,
|
||||
L"Options",
|
||||
L"/DEBUGPORT=SCREEN /NOGUIBOOT /SOS");
|
||||
L"/DEBUGPORT=SCREEN /SOS");
|
||||
|
||||
/* Create "DOS" section */
|
||||
IniSection = IniCacheAppendSection(IniCache,
|
||||
|
|
|
@ -596,7 +596,7 @@ PcVideoSetMode80x50_80x43(VOID)
|
|||
{
|
||||
if (VIDEOCARD_VGA == PcVideoDetectVideoCard())
|
||||
{
|
||||
PcVideoSetBiosMode(0x03);
|
||||
PcVideoSetBiosMode(0x12);
|
||||
PcVideoSetFont8x8();
|
||||
PcVideoSelectAlternatePrintScreen();
|
||||
PcVideoDisableCursorEmulation();
|
||||
|
@ -1108,8 +1108,8 @@ PcVideoSync(VOID)
|
|||
VOID
|
||||
PcVideoPrepareForReactOS(VOID)
|
||||
{
|
||||
PcVideoSetMode80x50_80x43();
|
||||
PcVideoHideShowTextCursor(FALSE);
|
||||
PcVideoSetBiosMode(0x12);
|
||||
PcVideoHideShowTextCursor(FALSE);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -932,7 +932,7 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
|
|||
* Now boot the kernel
|
||||
*/
|
||||
DiskStopFloppyMotor();
|
||||
//MachVideoPrepareForReactOS();
|
||||
MachVideoPrepareForReactOS();
|
||||
FrLdrStartup(0x2badb002);
|
||||
}
|
||||
|
||||
|
|
|
@ -847,7 +847,7 @@ VidSetScrollRegion(ULONG x1,
|
|||
{
|
||||
/* Assert alignment */
|
||||
ASSERT((x1 & 0x7) == 0);
|
||||
ASSERT((x2 & 0x7) == 0);
|
||||
ASSERT((x2 & 0x7) == 7);
|
||||
|
||||
/* Set Scroll Region */
|
||||
ScrollRegion[0] = x1;
|
||||
|
|
|
@ -1028,7 +1028,7 @@ Phase1InitializationDiscard(PVOID Context)
|
|||
{
|
||||
/* It is, display the boot logo and enable printing strings */
|
||||
InbvEnableDisplayString(SosEnabled);
|
||||
//DisplayBootBitmap(SosEnabled);
|
||||
DisplayBootBitmap(SosEnabled);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1204,7 +1204,7 @@ Phase1InitializationDiscard(PVOID Context)
|
|||
/* Wait 5 seconds for it to initialize */
|
||||
Timeout.QuadPart = Int32x32To64(5, -10000000);
|
||||
Status = ZwWaitForSingleObject(ProcessInfo->ProcessHandle, FALSE, &Timeout);
|
||||
//if (InbvBootDriverInstalled) FinalizeBootLogo();
|
||||
if (InbvBootDriverInstalled) FinalizeBootLogo();
|
||||
|
||||
if (Status == STATUS_SUCCESS)
|
||||
{
|
||||
|
|
|
@ -150,7 +150,7 @@ ShutdownThreadMain(PVOID Context)
|
|||
InbvSetTextColor(15);
|
||||
InbvInstallDisplayStringFilter(NULL);
|
||||
InbvEnableDisplayString(TRUE);
|
||||
//InbvSetScrollRegion(0, 0, 639, 479);
|
||||
InbvSetScrollRegion(0, 0, 639, 479);
|
||||
}
|
||||
|
||||
if (Action == ShutdownNoReboot)
|
||||
|
|
|
@ -19,6 +19,9 @@ INBV_PROGRESS_STATE InbvProgressState;
|
|||
INBV_RESET_DISPLAY_PARAMETERS InbvResetDisplayParameters;
|
||||
ULONG ResourceCount;
|
||||
PUCHAR ResourceList[64];
|
||||
BOOLEAN SysThreadCreated;
|
||||
ROT_BAR_TYPE RotBarSelection;
|
||||
ULONG PltRotBarStatus;
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
|
@ -528,3 +531,94 @@ NtDisplayString(IN PUNICODE_STRING DisplayString)
|
|||
/* Return success */
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
DisplayBootBitmap(IN BOOLEAN SosMode)
|
||||
{
|
||||
PVOID Bitmap, Header;
|
||||
ROT_BAR_TYPE TempRotBarSelection = RB_UNSPECIFIED;
|
||||
|
||||
/* Check if the system thread has already been created */
|
||||
if (SysThreadCreated)
|
||||
{
|
||||
/* Reset the progress bar */
|
||||
InbvAcquireLock();
|
||||
RotBarSelection = 0;
|
||||
InbvReleaseLock();
|
||||
}
|
||||
|
||||
/* Check if this is SOS mode */
|
||||
ShowProgressBar = FALSE;
|
||||
if (SosMode)
|
||||
{
|
||||
/* Check if this is a server OS */
|
||||
if (SharedUserData->NtProductType == NtProductWinNt)
|
||||
{
|
||||
/* It's not, set workstation settings */
|
||||
InbvSetTextColor(15);
|
||||
InbvSolidColorFill(0, 0, 639, 479, 7);
|
||||
InbvSolidColorFill(0, 421, 639, 479, 1);
|
||||
|
||||
/* Get resources */
|
||||
Bitmap = InbvGetResourceAddress(6);
|
||||
Header = InbvGetResourceAddress(7);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Set server settings */
|
||||
InbvSetTextColor(14);
|
||||
InbvSolidColorFill(0, 0, 639, 479, 6);
|
||||
InbvSolidColorFill(0, 421, 639, 479, 1);
|
||||
|
||||
/* Get resources */
|
||||
Bitmap = InbvGetResourceAddress(14);
|
||||
Header = InbvGetResourceAddress(15);
|
||||
}
|
||||
|
||||
/* Set the scrolling region */
|
||||
InbvSetScrollRegion(32, 80, 631, 400);
|
||||
|
||||
/* Make sure we have resources */
|
||||
if ((Bitmap) && (Header))
|
||||
{
|
||||
/* BitBlt them on the screen */
|
||||
InbvBitBlt(Header, 0, 419);
|
||||
InbvBitBlt(Bitmap, 0, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Is the boot driver installed? */
|
||||
if (!InbvBootDriverInstalled) return;
|
||||
|
||||
/* FIXME: TODO, display full-screen bitmap */
|
||||
}
|
||||
|
||||
/* Do we have a system thread? */
|
||||
if (SysThreadCreated)
|
||||
{
|
||||
/* We do, set the progress bar location */
|
||||
InbvAcquireLock();
|
||||
RotBarSelection = TempRotBarSelection;
|
||||
//InbvRotBarInit();
|
||||
InbvReleaseLock();
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
FinalizeBootLogo(VOID)
|
||||
{
|
||||
/* Acquire lock and check the display state */
|
||||
InbvAcquireLock();
|
||||
if (InbvGetDisplayState() == INBV_DISPLAY_STATE_OWNED)
|
||||
{
|
||||
/* Clear the screen */
|
||||
VidSolidColorFill(0, 0, 639, 479, 0);
|
||||
}
|
||||
|
||||
/* Reset progress bar and lock */
|
||||
PltRotBarStatus = 3;
|
||||
InbvReleaseLock();
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 932 B |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 656 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 878 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 932 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 262 B |
|
@ -8,6 +8,12 @@ typedef struct _InbvProgressState
|
|||
ULONG Bias;
|
||||
} INBV_PROGRESS_STATE;
|
||||
|
||||
typedef enum _ROT_BAR_TYPE
|
||||
{
|
||||
RB_UNSPECIFIED,
|
||||
RB_SQUARE_CELLS
|
||||
} ROT_BAR_TYPE;
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
InbvUpdateProgressBar(
|
||||
|
@ -27,6 +33,18 @@ InbvEnableBootDriver(
|
|||
IN BOOLEAN Enable
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
DisplayBootBitmap(
|
||||
IN BOOLEAN SosMode
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
FinalizeBootLogo(
|
||||
VOID
|
||||
);
|
||||
|
||||
#endif /* NTOSKRNL_INBV_H */
|
||||
|
||||
|
||||
|
|