Author: tkreuzer Date: Fri Oct 17 16:07:24 2008 New Revision: 36800
URL: http://svn.reactos.org/svn/reactos?rev=36800&view=rev Log: Win32 structure cleanup (WIP): - Use CLIENTINFO.ulClientDelta instead of W32THREADINFO.DesktopHeapDelta - Remove DesktopHeapDelta from W32THREADINFO- Add PtiList to DESKTOP - Add pClientInfo to THREADINFO
Modified: trunk/reactos/dll/win32/user32/include/user32.h trunk/reactos/include/reactos/win32k/ntuser.h trunk/reactos/subsystems/win32/win32k/include/desktop.h trunk/reactos/subsystems/win32/win32k/include/win32.h trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c trunk/reactos/subsystems/win32/win32k/ntuser/misc.c
Modified: trunk/reactos/dll/win32/user32/include/user32.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/include/us... ============================================================================== --- trunk/reactos/dll/win32/user32/include/user32.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/user32/include/user32.h [iso-8859-1] Fri Oct 17 16:07:24 2008 @@ -65,12 +65,14 @@ DesktopPtrToUser(PVOID Ptr) { PW32THREADINFO ti = GetW32ThreadInfo(); + PCLIENTINFO pci = GetWin32ClientInfo(); + ASSERT(Ptr != NULL); ASSERT(ti != NULL); if ((ULONG_PTR)Ptr >= (ULONG_PTR)ti->DesktopHeapBase && (ULONG_PTR)Ptr < (ULONG_PTR)ti->DesktopHeapBase + ti->DesktopHeapLimit) { - return (PVOID)((ULONG_PTR)Ptr - ti->DesktopHeapDelta); + return (PVOID)((ULONG_PTR)Ptr - pci->ulClientDelta); } else {
Modified: trunk/reactos/include/reactos/win32k/ntuser.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntus... ============================================================================== --- trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] Fri Oct 17 16:07:24 2008 @@ -312,7 +312,6 @@ PDESKTOPINFO Desktop; PVOID DesktopHeapBase; ULONG_PTR DesktopHeapLimit; - ULONG_PTR DesktopHeapDelta; /* A mask of what hooks are currently active */ ULONG Hooks; CLIENTTHREADINFO ClientThreadInfo;
Modified: trunk/reactos/subsystems/win32/win32k/include/desktop.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/inc... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/desktop.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/include/desktop.h [iso-8859-1] Fri Oct 17 16:07:24 2008 @@ -9,6 +9,8 @@ CSHORT Type; CSHORT Size; LIST_ENTRY ListEntry; + + LIST_ENTRY PtiList;
/* Pointer to the associated window station. */ struct _WINSTATION_OBJECT *WindowStation; @@ -203,7 +205,9 @@ ULONG_PTR Delta = 0;
pti = PsGetCurrentThreadWin32Thread(); - ASSERT(pti->Desktop != NULL); + if (!pti->Desktop) + return 0; + hDesktopHeap = pti->Desktop->hDesktopHeap;
Mapping = PsGetCurrentProcessWin32Process()->HeapMappings.Next;
Modified: trunk/reactos/subsystems/win32/win32k/include/win32.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/inc... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/win32.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/include/win32.h [iso-8859-1] Fri Oct 17 16:07:24 2008 @@ -28,6 +28,7 @@ { W32THREAD W32Thread; PDESKTOPINFO pDeskInfo; + PCLIENTINFO pClientInfo; LIST_ENTRY PtiLink;
struct _USER_MESSAGE_QUEUE* MessageQueue;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c [iso-8859-1] Fri Oct 17 16:07:24 2008 @@ -1768,9 +1768,9 @@ ti->Desktop = NULL; ti->DesktopHeapBase = NULL; ti->DesktopHeapLimit = 0; - ti->DesktopHeapDelta = 0; } } + GetWin32ClientInfo()->ulClientDelta = 0;
return Status; } @@ -1846,9 +1846,9 @@ ti->Desktop = DesktopObject->DesktopInfo; ti->DesktopHeapBase = DesktopObject->hDesktopHeap; ti->DesktopHeapLimit = ViewSize; - ti->DesktopHeapDelta = DesktopHeapGetUserDelta(); } } + GetWin32ClientInfo()->ulClientDelta = DesktopHeapGetUserDelta();
return STATUS_SUCCESS; } @@ -1895,8 +1895,13 @@ if (ti != NULL) { ti->Desktop = NULL; - ti->DesktopHeapDelta = 0; } + } + + /* Hack for system threads */ + if (NtCurrentTeb()) + { + GetWin32ClientInfo()->ulClientDelta = DesktopHeapGetUserDelta(); }
if (OldDesktop != NULL &&
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/misc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/misc.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/misc.c [iso-8859-1] Fri Oct 17 16:07:24 2008 @@ -464,14 +464,12 @@ ti->Desktop = W32Thread->Desktop->DesktopInfo; ti->DesktopHeapBase = W32Thread->Desktop->DesktopInfo->hKernelHeap; ti->DesktopHeapLimit = W32Thread->Desktop->DesktopInfo->HeapLimit; - ti->DesktopHeapDelta = DesktopHeapGetUserDelta(); } else { ti->Desktop = NULL; ti->DesktopHeapBase = NULL; ti->DesktopHeapLimit = 0; - ti->DesktopHeapDelta = 0; }
W32Thread->ThreadInfo = ti;