mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
Do not revoke the display ownership until the bootvid thread is terminated.
svn path=/trunk/; revision=20015
This commit is contained in:
parent
873e87742a
commit
1c93c8782a
1 changed files with 13 additions and 3 deletions
|
@ -45,7 +45,7 @@
|
||||||
* Set to Write Mode 2 and Read Mode 0.
|
* Set to Write Mode 2 and Read Mode 0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static VGA_REGISTERS Mode12Regs =
|
static const VGA_REGISTERS Mode12Regs =
|
||||||
{
|
{
|
||||||
/* CRT Controller Registers */
|
/* CRT Controller Registers */
|
||||||
{0x5F, 0x4F, 0x50, 0x82, 0x54, 0x80, 0x0B, 0x3E, 0x00, 0x40, 0x00, 0x00,
|
{0x5F, 0x4F, 0x50, 0x82, 0x54, 0x80, 0x0B, 0x3E, 0x00, 0x40, 0x00, 0x00,
|
||||||
|
@ -69,6 +69,9 @@ long maskbit[640];
|
||||||
static CLIENT_ID BitmapThreadId;
|
static CLIENT_ID BitmapThreadId;
|
||||||
static PUCHAR BootimageBitmap;
|
static PUCHAR BootimageBitmap;
|
||||||
|
|
||||||
|
static ULONG ShutdownNotify;
|
||||||
|
static KEVENT ShutdownCompleteEvent;
|
||||||
|
|
||||||
/* DATA **********************************************************************/
|
/* DATA **********************************************************************/
|
||||||
|
|
||||||
static PDRIVER_OBJECT BootVidDriverObject = NULL;
|
static PDRIVER_OBJECT BootVidDriverObject = NULL;
|
||||||
|
@ -156,7 +159,7 @@ vgaPreCalc()
|
||||||
|
|
||||||
|
|
||||||
STATIC VOID FASTCALL
|
STATIC VOID FASTCALL
|
||||||
vgaSetRegisters(PVGA_REGISTERS Registers)
|
vgaSetRegisters(const VGA_REGISTERS *Registers)
|
||||||
{
|
{
|
||||||
UINT i;
|
UINT i;
|
||||||
|
|
||||||
|
@ -237,6 +240,9 @@ static VOID STDCALL
|
||||||
VidCleanUp(VOID)
|
VidCleanUp(VOID)
|
||||||
{
|
{
|
||||||
InbvUnmapVideoMemory();
|
InbvUnmapVideoMemory();
|
||||||
|
InterlockedIncrement(&ShutdownNotify);
|
||||||
|
KeWaitForSingleObject(&ShutdownCompleteEvent, Executive, KernelMode,
|
||||||
|
FALSE, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -495,7 +501,7 @@ InbvFadeUpPalette()
|
||||||
FaderPaletteDelta[i].b = ((Palette[i].rgbBlue << 8) / PALETTE_FADE_STEPS);
|
FaderPaletteDelta[i].b = ((Palette[i].rgbBlue << 8) / PALETTE_FADE_STEPS);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < PALETTE_FADE_STEPS; i++)
|
for (i = 0; i < PALETTE_FADE_STEPS && !ShutdownNotify; i++)
|
||||||
{
|
{
|
||||||
/* Disable screen and enable palette access. */
|
/* Disable screen and enable palette access. */
|
||||||
READ_PORT_UCHAR(STATUS);
|
READ_PORT_UCHAR(STATUS);
|
||||||
|
@ -548,6 +554,7 @@ InbvBitmapThreadMain(PVOID Ignored)
|
||||||
{
|
{
|
||||||
DbgPrint("Warning: Cannot find boot image\n");
|
DbgPrint("Warning: Cannot find boot image\n");
|
||||||
}
|
}
|
||||||
|
KeSetEvent(&ShutdownCompleteEvent, 0, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -639,6 +646,9 @@ DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
|
||||||
|
|
||||||
BootVidDriverObject = DriverObject;
|
BootVidDriverObject = DriverObject;
|
||||||
|
|
||||||
|
ShutdownNotify = 0;
|
||||||
|
KeInitializeEvent(&ShutdownCompleteEvent, NotificationEvent, FALSE);
|
||||||
|
|
||||||
/* Register driver routines */
|
/* Register driver routines */
|
||||||
DriverObject->MajorFunction[IRP_MJ_CLOSE] = VidDispatch;
|
DriverObject->MajorFunction[IRP_MJ_CLOSE] = VidDispatch;
|
||||||
DriverObject->MajorFunction[IRP_MJ_CREATE] = VidDispatch;
|
DriverObject->MajorFunction[IRP_MJ_CREATE] = VidDispatch;
|
||||||
|
|
Loading…
Reference in a new issue