Author: rharabien Date: Wed Jun 15 12:53:32 2011 New Revision: 52244
URL: http://svn.reactos.org/svn/reactos?rev=52244&view=rev Log: [NTOSKRNL] - Disable displaying string by bootvid after successful kernel phase 1 initialization, so there won't be graphical glitches at the top of screen if system has screen debugging enabled - Make screen black right after phase 1 initialization finish instead of waiting 5 seconds. It removes black rectangle which appeared for me in explorer. - Initialize some global variables in inbv.c (it was done by compiler before)
Modified: trunk/reactos/ntoskrnl/ex/init.c trunk/reactos/ntoskrnl/inbv/inbv.c trunk/reactos/ntoskrnl/io/iomgr/iomgr.c
Modified: trunk/reactos/ntoskrnl/ex/init.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=5224... ============================================================================== --- trunk/reactos/ntoskrnl/ex/init.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ex/init.c [iso-8859-1] Wed Jun 15 12:53:32 2011 @@ -1313,7 +1313,7 @@ size_t Remaining; PRTL_USER_PROCESS_INFORMATION ProcessInfo; KEY_VALUE_PARTIAL_INFORMATION KeyPartialInfo; - UNICODE_STRING KeyName, DebugString; + UNICODE_STRING KeyName; OBJECT_ATTRIBUTES ObjectAttributes; HANDLE KeyHandle, OptionHandle; PRTL_USER_PROCESS_PARAMETERS ProcessParameters = NULL; @@ -1925,18 +1925,19 @@ /* Update progress bar */ InbvUpdateProgressBar(100);
- /* Allow strings to be displayed */ - InbvEnableDisplayString(TRUE); - - /* Wait 5 seconds for it to initialize */ + /* Disallow strings to be displayed */ + InbvEnableDisplayString(FALSE); + + /* Clean the screen */ + if (InbvBootDriverInstalled) FinalizeBootLogo(); + + /* Wait 5 seconds for initial process to initialize */ Timeout.QuadPart = Int32x32To64(5, -10000000); Status = ZwWaitForSingleObject(ProcessInfo->ProcessHandle, FALSE, &Timeout); - if (InbvBootDriverInstalled) FinalizeBootLogo(); if (Status == STATUS_SUCCESS) { /* Failed, display error */ - RtlInitUnicodeString(&DebugString, L"INIT: Session Manager terminated."); - ZwDisplayString(&DebugString); + DPRINT1("INIT: Session Manager terminated.\n");
/* Bugcheck the system if SMSS couldn't initialize */ KeBugCheck(SESSION5_INITIALIZATION_FAILED);
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] Wed Jun 15 12:53:32 2011 @@ -10,16 +10,16 @@ KSPIN_LOCK BootDriverLock; KIRQL InbvOldIrql; INBV_DISPLAY_STATE InbvDisplayState; -BOOLEAN InbvBootDriverInstalled; -BOOLEAN InbvDisplayDebugStrings; +BOOLEAN InbvBootDriverInstalled = FALSE; +BOOLEAN InbvDisplayDebugStrings = FALSE; INBV_DISPLAY_STRING_FILTER InbvDisplayFilter; ULONG ProgressBarLeft, ProgressBarTop; -BOOLEAN ShowProgressBar; +BOOLEAN ShowProgressBar = FALSE; INBV_PROGRESS_STATE InbvProgressState; INBV_RESET_DISPLAY_PARAMETERS InbvResetDisplayParameters; ULONG ResourceCount; PUCHAR ResourceList[64]; -BOOLEAN SysThreadCreated; +BOOLEAN SysThreadCreated = FALSE; ROT_BAR_TYPE RotBarSelection; ULONG PltRotBarStatus; BT_PROGRESS_INDICATOR InbvProgressIndicator = {0, 25, 0};
Modified: trunk/reactos/ntoskrnl/io/iomgr/iomgr.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iomgr.c?r... ============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/iomgr.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/iomgr.c [iso-8859-1] Wed Jun 15 12:53:32 2011 @@ -480,10 +480,18 @@ KeSetTimerEx(&IopTimer, ExpireTime, 1000, &IopTimerDpc);
/* Create Object Types */ - if (!IopCreateObjectTypes()) return FALSE; + if (!IopCreateObjectTypes()) + { + DPRINT1("IopCreateObjectTypes failed!\n"); + return FALSE; + }
/* Create Object Directories */ - if (!IopCreateRootDirectories()) return FALSE; + if (!IopCreateRootDirectories()) + { + DPRINT1("IopCreateRootDirectories failed!\n"); + return FALSE; + }
/* Initialize PnP manager */ IopInitializePlugPlayServices(); @@ -511,10 +519,19 @@ IopLoaderBlock = NULL;
/* Create ARC names for boot devices */ - if (!NT_SUCCESS(IopCreateArcNames(LoaderBlock))) return FALSE; + Status = IopCreateArcNames(LoaderBlock); + if (!NT_SUCCESS(Status)) + { + DPRINT1("IopCreateArcNames failed: %lx\n", Status); + return FALSE; + }
/* Mark the system boot partition */ - if (!IopMarkBootPartition(LoaderBlock)) return FALSE; + if (!IopMarkBootPartition(LoaderBlock)) + { + DPRINT1("IopMarkBootPartition failed!\n"); + return FALSE; + }
/* Initialize PnP root relations */ IopEnumerateDevice(IopRootDeviceNode->PhysicalDeviceObject); @@ -539,7 +556,11 @@
/* Convert SystemRoot from ARC to NT path */ Status = IopReassignSystemRoot(LoaderBlock, &NtBootPath); - if (!NT_SUCCESS(Status)) return FALSE; + if (!NT_SUCCESS(Status)) + { + DPRINT1("IopReassignSystemRoot failed: %lx\n", Status); + return FALSE; + }
/* Set the ANSI_STRING for the root path */ RootString.MaximumLength = NtSystemRoot.MaximumLength / sizeof(WCHAR); @@ -550,7 +571,11 @@
/* Convert the path into the ANSI_STRING */ Status = RtlUnicodeStringToAnsiString(&RootString, &NtSystemRoot, FALSE); - if (!NT_SUCCESS(Status)) return FALSE; + if (!NT_SUCCESS(Status)) + { + DPRINT1("RtlUnicodeStringToAnsiString failed: %lx\n", Status); + return FALSE; + }
/* Assign drive letters */ IoAssignDriveLetters(LoaderBlock, @@ -560,10 +585,19 @@
/* Update system root */ Status = RtlAnsiStringToUnicodeString(&NtSystemRoot, &RootString, FALSE); - if (!NT_SUCCESS(Status)) return FALSE; + if (!NT_SUCCESS(Status)) + { + DPRINT1("RtlAnsiStringToUnicodeString failed: %lx\n", Status); + return FALSE; + }
/* Load the System DLL and its Entrypoints */ - if (!NT_SUCCESS(PsLocateSystemDll())) return FALSE; + Status = PsLocateSystemDll(); + if (!NT_SUCCESS(Status)) + { + DPRINT1("PsLocateSystemDll failed: %lx\n", Status); + return FALSE; + }
/* Return success */ return TRUE;