[WIN32K:NTUSER]
[reactos.git] / reactos / win32ss / user / ntuser / ntuser.c
index 1546e84..87a285a 100644 (file)
@@ -15,11 +15,12 @@ BOOL FASTCALL RegisterControlAtoms(VOID);
 PTHREADINFO gptiCurrent = NULL;
 PPROCESSINFO gppiInputProvider = NULL;
 ERESOURCE UserLock;
-ATOM AtomMessage; // Window Message atom.
-ATOM AtomWndObj;  // Window Object atom.
-ATOM AtomLayer;   // Window Layer atom.
+ATOM AtomMessage;       // Window Message atom.
+ATOM AtomWndObj;        // Window Object atom.
+ATOM AtomLayer;         // Window Layer atom.
 ATOM AtomFlashWndState; // Window Flash State atom.
-ATOM AtomDDETrack; // Window DDE Tracking atom.
+ATOM AtomDDETrack;      // Window DDE Tracking atom.
+ATOM AtomQOS;           // Window DDE Quality of Service atom.
 HINSTANCE hModClient = NULL;
 BOOL ClientPfnInit = FALSE;
 ATOM gaGuiConsoleWndClass;
@@ -52,6 +53,7 @@ InitUserAtoms(VOID)
     gpsi->atomFrostedWindowProp = IntAddGlobalAtom(L"SysFrostedWindow", TRUE);
 
     AtomDDETrack = IntAddGlobalAtom(L"SysDT", TRUE);
+    AtomQOS      = IntAddGlobalAtom(L"SysQOS", TRUE);
 
     /*
      * FIXME: AddPropW uses the global kernel atom table, thus leading to conflicts if we use
@@ -111,8 +113,9 @@ UserInitialize(VOID)
     HBITMAP hPattern55AABitmap = NULL;
     NTSTATUS Status;
 
-// Set W32PF_Flags |= (W32PF_READSCREENACCESSGRANTED | W32PF_IOWINSTA)
-// Create Event for Diconnect Desktop.
+    NT_ASSERT(PsGetCurrentThreadWin32Thread() != NULL);
+
+// Create Event for Disconnect Desktop.
 
     Status = UserCreateWinstaDirectory();
     if (!NT_SUCCESS(Status)) return Status;
@@ -127,14 +130,7 @@ UserInitialize(VOID)
 //     Update Shared Device Caps.
 //     Initialize User Screen.
 // }
-// Create ThreadInfo for this Thread!
-// {
-
-    /* Initialize the current thread */
-    Status = InitThreadCallback(PsGetCurrentThread());
-    if (!NT_SUCCESS(Status)) return Status;
 
-// }
 // Set Global SERVERINFO Error flags.
 // Load Resources.
 
@@ -143,9 +139,14 @@ UserInitialize(VOID)
     if (gpsi->hbrGray == NULL)
     {
         hPattern55AABitmap = GreCreateBitmap(8, 8, 1, 1, (LPBYTE)wPattern55AA);
+        if (hPattern55AABitmap == NULL)
+            return STATUS_INSUFFICIENT_RESOURCES;
+
+        //NT_VERIFY(GreSetBitmapOwner(hPattern55AABitmap, GDI_OBJ_HMGR_PUBLIC));
         gpsi->hbrGray = IntGdiCreatePatternBrush(hPattern55AABitmap);
         GreDeleteObject(hPattern55AABitmap);
-        GreSetBrushOwner(gpsi->hbrGray, GDI_OBJ_HMGR_PUBLIC);
+        if (gpsi->hbrGray == NULL)
+            return STATUS_INSUFFICIENT_RESOURCES;
     }
 
     return STATUS_SUCCESS;