[WIN32K]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 3 Nov 2010 12:20:07 +0000 (12:20 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 3 Nov 2010 12:20:07 +0000 (12:20 +0000)
- Make InitVideo return NTSTATUS and properly handle failure
- Silence a DPRINT, improve a DPRINT

svn path=/trunk/; revision=49458

reactos/subsystems/win32/win32k/eng/device.c
reactos/subsystems/win32/win32k/ntuser/display.c
reactos/subsystems/win32/win32k/ntuser/ntuser.c

index a6c0e72..730b2ff 100644 (file)
@@ -52,7 +52,7 @@ EngpRegisterGraphicsDevice(
     PDEVMODEW pdm, pdmEnd;
     PLDEVOBJ pldev;
 
-    DPRINT1("EngpRegisterGraphicsDevice(%S)\n", pustrDeviceName->Buffer);
+    DPRINT("EngpRegisterGraphicsDevice(%wZ)\n", pustrDeviceName);
 
     /* Allocate a GRAPHICS_DEVICE structure */
     pGraphicsDevice = ExAllocatePoolWithTag(PagedPool,
@@ -71,7 +71,7 @@ EngpRegisterGraphicsDevice(
                                       &pDeviceObject);
     if (!NT_SUCCESS(Status))
     {
-        DPRINT1("Could not open driver, 0x%lx\n", Status);
+        DPRINT1("Could not open driver %wZ, 0x%lx\n", pustrDeviceName, Status);
         ExFreePoolWithTag(pGraphicsDevice, GDITAG_GDEVICE);
         return NULL;
     }
index 95f4aee..f5770a7 100644 (file)
@@ -147,10 +147,9 @@ InitDisplayDriver(
     return pGraphicsDevice;
 }
 
-BOOL
-InitVideo(
-    PUNICODE_STRING pustrRegPath,
-    FLONG flags)
+NTSTATUS
+NTAPI
+InitVideo()
 {
     ULONG iDevNum, iVGACompatible = -1, ulMaxObjectNumber = 0;
     WCHAR awcDeviceName[20];
@@ -160,8 +159,9 @@ InitVideo(
     ULONG cbValue;
     HKEY hkey;
 
-    DPRINT1("----------------------------- InitVideo() -------------------------------\n");
+    DPRINT("----------------------------- InitVideo() -------------------------------\n");
 
+    /* Open the key for the boot command line */
     Status = RegOpenKey(L"\\REGISTRY\\MACHINE\\SYSTEM\\CurrentControlSet\\Control", &hkey);
     if (NT_SUCCESS(Status))
     {
@@ -185,7 +185,7 @@ InitVideo(
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("Could not open device registry key!\n");
-        ASSERT(FALSE);
+        return Status;
     }
 
     /* Read the name of the VGA adapter */
@@ -220,7 +220,9 @@ InitVideo(
             continue;
         }
 
+        /* Initialize the driver for this device */
         pGraphicsDevice = InitDisplayDriver(awcDeviceName, awcBuffer);
+        if (!pGraphicsDevice) continue;
 
         /* Check if this is the VGA adapter */
         if (iDevNum == iVGACompatible)
@@ -235,8 +237,16 @@ InitVideo(
             gpPrimaryGraphicsDevice = pGraphicsDevice;
     }
 
+    /* Close the device map registry key */
     ZwClose(hkey);
 
+    /* Check if we had any success */
+    if (!gpPrimaryGraphicsDevice)
+    {
+        DPRINT1("No usable display driver was found.\n");
+        return STATUS_UNSUCCESSFUL;
+    }
+
     if (gbBaseVideo)
     {
         if (gpVgaGraphicsDevice)
index d05b893..d28aa33 100644 (file)
@@ -82,8 +82,9 @@ InitUserImpl(VOID)
    return STATUS_SUCCESS;
 }
 
-BOOL
-InitVideo(ULONG);
+NTSTATUS
+NTAPI
+InitVideo();
 
 NTSTATUS
 NTAPI
@@ -91,11 +92,16 @@ UserInitialize(
   HANDLE  hPowerRequestEvent,
   HANDLE  hMediaRequestEvent)
 {
+    NTSTATUS Status;
+
 // Set W32PF_Flags |= (W32PF_READSCREENACCESSGRANTED | W32PF_IOWINSTA)
 // Create Object Directory,,, Looks like create workstation. "\\Windows\\WindowStations"
 // Create Event for Diconnect Desktop.
-    InitVideo(0);
-// Initialize Video.
+
+    /* Initialize Video. */
+    Status = InitVideo();
+    if (!NT_SUCCESS(Status)) return Status;
+
 // {
 //     DrvInitConsole.
 //     DrvChangeDisplaySettings.