From c11d2651442cf86df5f2be348592edf06d1da521 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 26 Feb 2008 23:09:20 +0000 Subject: [PATCH] Bye, bye, GDIOBJ header! You've served us well, but now the time has come for you to make room for BASEOBJECT. Also bye, bye, HandleTable parameter. You've never done any reasonable job, so no one will be missing you. svn path=/trunk/; revision=32497 --- reactos/subsystems/win32/win32k/eng/palette.c | 4 +- reactos/subsystems/win32/win32k/eng/surface.c | 10 +- .../subsystems/win32/win32k/include/bitmaps.h | 8 +- .../subsystems/win32/win32k/include/brush.h | 8 +- reactos/subsystems/win32/win32k/include/dc.h | 4 +- .../subsystems/win32/win32k/include/gdiobj.h | 48 ++-- .../subsystems/win32/win32k/include/palette.h | 6 +- reactos/subsystems/win32/win32k/include/pen.h | 14 +- .../subsystems/win32/win32k/include/region.h | 6 +- .../subsystems/win32/win32k/include/text.h | 8 +- .../subsystems/win32/win32k/main/dllmain.c | 4 +- .../win32/win32k/ntuser/cursoricon.c | 12 +- reactos/subsystems/win32/win32k/ntuser/misc.c | 2 +- .../subsystems/win32/win32k/ntuser/painting.c | 14 +- .../subsystems/win32/win32k/ntuser/windc.c | 2 +- .../subsystems/win32/win32k/objects/bitmaps.c | 12 +- .../subsystems/win32/win32k/objects/brush.c | 8 +- .../subsystems/win32/win32k/objects/cliprgn.c | 2 +- .../subsystems/win32/win32k/objects/color.c | 20 +- reactos/subsystems/win32/win32k/objects/dc.c | 18 +- .../subsystems/win32/win32k/objects/gdiobj.c | 214 +++++++++--------- .../subsystems/win32/win32k/objects/palobj.c | 4 +- .../subsystems/win32/win32k/objects/region.c | 2 +- .../win32/win32k/objects/stockobj.c | 6 +- 24 files changed, 203 insertions(+), 233 deletions(-) diff --git a/reactos/subsystems/win32/win32k/eng/palette.c b/reactos/subsystems/win32/win32k/eng/palette.c index 8515cae8de6..bfd04d9d76a 100644 --- a/reactos/subsystems/win32/win32k/eng/palette.c +++ b/reactos/subsystems/win32/win32k/eng/palette.c @@ -68,7 +68,7 @@ EngCreatePalette(ULONG Mode, ULONG NumColors, ULONG *Colors, Palette = PALETTE_AllocPalette(Mode, NumColors, Colors, Red, Green, Blue); if (Palette != NULL) { - GDIOBJ_SetOwnership(GdiHandleTable, Palette, NULL); + GDIOBJ_SetOwnership(Palette, NULL); } return Palette; @@ -80,7 +80,7 @@ EngCreatePalette(ULONG Mode, ULONG NumColors, ULONG *Colors, BOOL STDCALL EngDeletePalette(IN HPALETTE Palette) { - GDIOBJ_SetOwnership(GdiHandleTable, Palette, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(Palette, PsGetCurrentProcess()); return PALETTE_FreePalette(Palette); } diff --git a/reactos/subsystems/win32/win32k/eng/surface.c b/reactos/subsystems/win32/win32k/eng/surface.c index 1becd177d6c..9aea1b7c763 100644 --- a/reactos/subsystems/win32/win32k/eng/surface.c +++ b/reactos/subsystems/win32/win32k/eng/surface.c @@ -379,7 +379,7 @@ EngCreateBitmap(IN SIZEL Size, if ( !NewBitmap ) return 0; - GDIOBJ_SetOwnership(GdiHandleTable, NewBitmap, NULL); + GDIOBJ_SetOwnership(NewBitmap, NULL); return NewBitmap; } @@ -400,7 +400,7 @@ EngCreateDeviceSurface(IN DHSURF dhsurf, if (NewSurface == NULL) return 0; - GDIOBJ_SetOwnership(GdiHandleTable, NewSurface, NULL); + GDIOBJ_SetOwnership(NewSurface, NULL); BitmapObj = BITMAPOBJ_LockBitmap(NewSurface); if (! BITMAPOBJ_InitBitsLock(BitmapObj)) @@ -512,7 +512,7 @@ EngModifySurface( BOOL STDCALL EngDeleteSurface(IN HSURF Surface) { - GDIOBJ_SetOwnership(GdiHandleTable, Surface, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(Surface, PsGetCurrentProcess()); BITMAPOBJ_FreeBitmap(Surface); return TRUE; } @@ -550,7 +550,7 @@ NtGdiEngLockSurface(IN HSURF Surface) SURFOBJ * STDCALL EngLockSurface(IN HSURF Surface) { - BITMAPOBJ *bmp = GDIOBJ_ShareLockObj(GdiHandleTable, Surface, GDI_OBJECT_TYPE_BITMAP); + BITMAPOBJ *bmp = GDIOBJ_ShareLockObj(Surface, GDI_OBJECT_TYPE_BITMAP); if (bmp != NULL) return &bmp->SurfObj; @@ -577,7 +577,7 @@ EngUnlockSurface(IN SURFOBJ *Surface) if (Surface != NULL) { BITMAPOBJ *bmp = CONTAINING_RECORD(Surface, BITMAPOBJ, SurfObj); - GDIOBJ_UnlockObjByPtr(GdiHandleTable, bmp); + GDIOBJ_ShareUnlockObjByPtr((POBJ)bmp); } } diff --git a/reactos/subsystems/win32/win32k/include/bitmaps.h b/reactos/subsystems/win32/win32k/include/bitmaps.h index 9484df2178a..6372f6614aa 100644 --- a/reactos/subsystems/win32/win32k/include/bitmaps.h +++ b/reactos/subsystems/win32/win32k/include/bitmaps.h @@ -27,14 +27,14 @@ typedef struct _BITMAPOBJ /* Internal interface */ #define BITMAPOBJ_AllocBitmap() \ - ((HBITMAP) GDIOBJ_AllocObj (GdiHandleTable, GDI_OBJECT_TYPE_BITMAP)) + ((HBITMAP) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_BITMAP)) #define BITMAPOBJ_FreeBitmap(hBMObj) \ - GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP) + GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP) /* NOTE: Use shared locks! */ #define BITMAPOBJ_LockBitmap(hBMObj) \ - ((PBITMAPOBJ) GDIOBJ_ShareLockObj (GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP)) + ((PBITMAPOBJ) GDIOBJ_ShareLockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP)) #define BITMAPOBJ_UnlockBitmap(pBMObj) \ - GDIOBJ_UnlockObjByPtr (GdiHandleTable, pBMObj) + GDIOBJ_ShareUnlockObjByPtr ((POBJ)pBMObj) BOOL INTERNAL_CALL BITMAP_Cleanup(PVOID ObjectBody); diff --git a/reactos/subsystems/win32/win32k/include/brush.h b/reactos/subsystems/win32/win32k/include/brush.h index 3b7d75e56b2..0572e820cfe 100644 --- a/reactos/subsystems/win32/win32k/include/brush.h +++ b/reactos/subsystems/win32/win32k/include/brush.h @@ -72,10 +72,10 @@ typedef struct #define GDIBRUSH_IS_MASKING 0x8000 /* Pattern bitmap is used as transparent mask (?) */ #define GDIBRUSH_CACHED_IS_SOLID 0x80000000 -#define BRUSHOBJ_AllocBrush() ((HBRUSH) GDIOBJ_AllocObj (GdiHandleTable, GDI_OBJECT_TYPE_BRUSH)) -#define BRUSHOBJ_FreeBrush(hBrush) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH) -#define BRUSHOBJ_LockBrush(hBrush) ((PGDIBRUSHOBJ)GDIOBJ_LockObj(GdiHandleTable, (HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH)) -#define BRUSHOBJ_UnlockBrush(pBrush) GDIOBJ_UnlockObjByPtr(GdiHandleTable, pBrush) +#define BRUSHOBJ_AllocBrush() ((HBRUSH) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_BRUSH)) +#define BRUSHOBJ_FreeBrush(hBrush) GDIOBJ_FreeObj((HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH) +#define BRUSHOBJ_LockBrush(hBrush) ((PGDIBRUSHOBJ)GDIOBJ_LockObj((HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH)) +#define BRUSHOBJ_UnlockBrush(pBrush) GDIOBJ_UnlockObjByPtr((POBJ)pBrush) INT FASTCALL BRUSH_GetObject (PGDIBRUSHOBJ GdiObject, INT Count, LPLOGBRUSH Buffer); BOOL INTERNAL_CALL BRUSH_Cleanup(PVOID ObjectBody); diff --git a/reactos/subsystems/win32/win32k/include/dc.h b/reactos/subsystems/win32/win32k/include/dc.h index 95a4352c43b..3e600285b3b 100644 --- a/reactos/subsystems/win32/win32k/include/dc.h +++ b/reactos/subsystems/win32/win32k/include/dc.h @@ -150,9 +150,9 @@ typedef struct /* Internal functions *********************************************************/ #define DC_LockDc(hDC) \ - ((PDC) GDIOBJ_LockObj (GdiHandleTable, (HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC)) + ((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC)) #define DC_UnlockDc(pDC) \ - GDIOBJ_UnlockObjByPtr (GdiHandleTable, pDC) + GDIOBJ_UnlockObjByPtr ((POBJ)pDC) NTSTATUS FASTCALL InitDcImpl(VOID); PGDIDEVICE FASTCALL IntEnumHDev(VOID); diff --git a/reactos/subsystems/win32/win32k/include/gdiobj.h b/reactos/subsystems/win32/win32k/include/gdiobj.h index 1a5752ab8b2..9bfb42b281b 100644 --- a/reactos/subsystems/win32/win32k/include/gdiobj.h +++ b/reactos/subsystems/win32/win32k/include/gdiobj.h @@ -35,26 +35,8 @@ typedef PVOID PGDIOBJ; typedef BOOL (INTERNAL_CALL *GDICLEANUPPROC)(PVOID ObjectBody); -/*! - * GDI object header. This is a part of any GDI object. ROS specific header! -*/ -typedef struct _GDIOBJHDR -{ - PETHREAD LockingThread; /* only assigned if a thread is holding the lock! */ - ULONG Locks; -#ifdef GDI_DEBUG - const char* createdfile; - int createdline; - const char* lockfile; - int lockline; -#endif -} GDIOBJHDR, *PGDIOBJHDR; - -// -// Every GDI Object must have this standard type of header. -// It's for thread locking. -// This header is standalone, used only in gdiobj.c. -// +/* Every GDI Object must have this standard type of header. + * It's for thread locking. */ typedef struct _BASEOBJECT { HGDIOBJ hHmgr; @@ -64,23 +46,23 @@ typedef struct _BASEOBJECT PW32THREAD Tid; } BASEOBJECT, *POBJ; -BOOL INTERNAL_CALL GDIOBJ_OwnedByCurrentProcess(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ ObjectHandle); -void INTERNAL_CALL GDIOBJ_SetOwnership(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ ObjectHandle, PEPROCESS Owner); -void INTERNAL_CALL GDIOBJ_CopyOwnership(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ CopyFrom, HGDIOBJ CopyTo); -BOOL INTERNAL_CALL GDIOBJ_ConvertToStockObj(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ *hObj); -VOID INTERNAL_CALL GDIOBJ_UnlockObjByPtr(PGDI_HANDLE_TABLE HandleTable, PGDIOBJ Object); +BOOL INTERNAL_CALL GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle); +VOID INTERNAL_CALL GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS Owner); +VOID INTERNAL_CALL GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo); +BOOL INTERNAL_CALL GDIOBJ_ConvertToStockObj(HGDIOBJ *hObj); +VOID INTERNAL_CALL GDIOBJ_UnlockObjByPtr(POBJ Object); +VOID INTERNAL_CALL GDIOBJ_ShareUnlockObjByPtr(POBJ Object); +BOOL INTERNAL_CALL GDIOBJ_ValidateHandle(HGDIOBJ hObj, ULONG ObjectType); +HGDIOBJ INTERNAL_CALL GDIOBJ_AllocObj(ULONG ObjectType); +BOOL INTERNAL_CALL GDIOBJ_FreeObj (HGDIOBJ hObj, DWORD ObjectType); +PGDIOBJ INTERNAL_CALL GDIOBJ_LockObj (HGDIOBJ hObj, DWORD ObjectType); +PGDIOBJ INTERNAL_CALL GDIOBJ_ShareLockObj (HGDIOBJ hObj, DWORD ObjectType); + +PVOID INTERNAL_CALL GDI_MapHandleTable(PSECTION_OBJECT SectionObject, PEPROCESS Process); #define GDIOBJ_GetObjectType(Handle) \ GDI_HANDLE_GET_TYPE(Handle) -BOOL INTERNAL_CALL GDIOBJ_ValidateHandle(HGDIOBJ hObj, ULONG ObjectType); -HGDIOBJ INTERNAL_CALL GDIOBJ_AllocObj(PGDI_HANDLE_TABLE HandleTable, ULONG ObjectType); -BOOL INTERNAL_CALL GDIOBJ_FreeObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ObjectType); -PGDIOBJ INTERNAL_CALL GDIOBJ_LockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ObjectType); -PGDIOBJ INTERNAL_CALL GDIOBJ_ShareLockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ObjectType); - -PVOID INTERNAL_CALL GDI_MapHandleTable(PSECTION_OBJECT SectionObject, PEPROCESS Process); - #define GDIOBJFLAG_DEFAULT (0x0) #define GDIOBJFLAG_IGNOREPID (0x1) #define GDIOBJFLAG_IGNORELOCK (0x2) diff --git a/reactos/subsystems/win32/win32k/include/palette.h b/reactos/subsystems/win32/win32k/include/palette.h index 42ab5e1bf18..9f5a7669c18 100644 --- a/reactos/subsystems/win32/win32k/include/palette.h +++ b/reactos/subsystems/win32/win32k/include/palette.h @@ -64,9 +64,9 @@ HPALETTE FASTCALL PALETTE_AllocPalette(ULONG Mode, ULONG Blue); HPALETTE FASTCALL PALETTE_AllocPaletteIndexedRGB(ULONG NumColors, CONST RGBQUAD *Colors); -#define PALETTE_FreePalette(hPalette) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ)hPalette, GDI_OBJECT_TYPE_PALETTE) -#define PALETTE_LockPalette(hPalette) ((PPALGDI)GDIOBJ_LockObj(GdiHandleTable, (HGDIOBJ)hPalette, GDI_OBJECT_TYPE_PALETTE)) -#define PALETTE_UnlockPalette(pPalette) GDIOBJ_UnlockObjByPtr(GdiHandleTable, pPalette) +#define PALETTE_FreePalette(hPalette) GDIOBJ_FreeObj((HGDIOBJ)hPalette, GDI_OBJECT_TYPE_PALETTE) +#define PALETTE_LockPalette(hPalette) ((PPALGDI)GDIOBJ_LockObj((HGDIOBJ)hPalette, GDI_OBJECT_TYPE_PALETTE)) +#define PALETTE_UnlockPalette(pPalette) GDIOBJ_UnlockObjByPtr((POBJ)pPalette) BOOL INTERNAL_CALL PALETTE_Cleanup(PVOID ObjectBody); HPALETTE FASTCALL PALETTE_Init (VOID); diff --git a/reactos/subsystems/win32/win32k/include/pen.h b/reactos/subsystems/win32/win32k/include/pen.h index bb6ad01c4d6..f3ad74e708c 100644 --- a/reactos/subsystems/win32/win32k/include/pen.h +++ b/reactos/subsystems/win32/win32k/include/pen.h @@ -6,13 +6,13 @@ /* Internal interface */ -#define PENOBJ_AllocPen() ((HPEN)GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TYPE_PEN)) -#define PENOBJ_FreePen(hBMObj) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN) -#define PENOBJ_LockPen(hBMObj) ((PGDIBRUSHOBJ)GDIOBJ_LockObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN)) -#define PENOBJ_AllocExtPen() ((HPEN)GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TYPE_EXTPEN)) -#define PENOBJ_FreeExtPen(hBMObj) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_EXTPEN) -#define PENOBJ_LockExtPen(hBMObj) ((PGDIBRUSHOBJ)GDIOBJ_LockObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_EXTPEN)) -#define PENOBJ_UnlockPen(pPenObj) GDIOBJ_UnlockObjByPtr(GdiHandleTable, pPenObj) +#define PENOBJ_AllocPen() ((HPEN)GDIOBJ_AllocObj(GDI_OBJECT_TYPE_PEN)) +#define PENOBJ_FreePen(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN) +#define PENOBJ_LockPen(hBMObj) ((PGDIBRUSHOBJ)GDIOBJ_LockObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN)) +#define PENOBJ_AllocExtPen() ((HPEN)GDIOBJ_AllocObj(GDI_OBJECT_TYPE_EXTPEN)) +#define PENOBJ_FreeExtPen(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_EXTPEN) +#define PENOBJ_LockExtPen(hBMObj) ((PGDIBRUSHOBJ)GDIOBJ_LockObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_EXTPEN)) +#define PENOBJ_UnlockPen(pPenObj) GDIOBJ_UnlockObjByPtr((POBJ)pPenObj) INT STDCALL PEN_GetObject(PGDIBRUSHOBJ hPen, INT Count, PLOGPEN Buffer); diff --git a/reactos/subsystems/win32/win32k/include/region.h b/reactos/subsystems/win32/win32k/include/region.h index 6e6b322440b..6180b708643 100644 --- a/reactos/subsystems/win32/win32k/include/region.h +++ b/reactos/subsystems/win32/win32k/include/region.h @@ -21,9 +21,9 @@ typedef struct _ROSRGNDATA /* Functions ******************************************************************/ -#define RGNDATA_FreeRgn(hRgn) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION) -#define RGNDATA_LockRgn(hRgn) ((PROSRGNDATA)GDIOBJ_LockObj(GdiHandleTable, (HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION)) -#define RGNDATA_UnlockRgn(pRgn) GDIOBJ_UnlockObjByPtr(GdiHandleTable, pRgn) +#define RGNDATA_FreeRgn(hRgn) GDIOBJ_FreeObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION) +#define RGNDATA_LockRgn(hRgn) ((PROSRGNDATA)GDIOBJ_LockObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION)) +#define RGNDATA_UnlockRgn(pRgn) GDIOBJ_UnlockObjByPtr((POBJ)pRgn) HRGN FASTCALL RGNDATA_AllocRgn(INT n); BOOL INTERNAL_CALL RGNDATA_Cleanup(PVOID ObjectBody); diff --git a/reactos/subsystems/win32/win32k/include/text.h b/reactos/subsystems/win32/win32k/include/text.h index acd7e77d599..6e5d6cc412c 100644 --- a/reactos/subsystems/win32/win32k/include/text.h +++ b/reactos/subsystems/win32/win32k/include/text.h @@ -69,10 +69,10 @@ typedef struct /* Internal interface */ #define TEXTOBJ_AllocText() \ - ((HFONT) GDIOBJ_AllocObj (GdiHandleTable, GDI_OBJECT_TYPE_FONT)) -#define TEXTOBJ_FreeText(hBMObj) GDIOBJ_FreeObj(GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT) -#define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj (GdiHandleTable, (HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)) -#define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr (GdiHandleTable, pBMObj) + ((HFONT) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_FONT)) +#define TEXTOBJ_FreeText(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT) +#define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)) +#define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr ((POBJ)pBMObj) NTSTATUS FASTCALL TextIntRealizeFont(HFONT FontHandle); NTSTATUS FASTCALL TextIntCreateFontIndirect(CONST LPLOGFONTW lf, HFONT *NewFont); diff --git a/reactos/subsystems/win32/win32k/main/dllmain.c b/reactos/subsystems/win32/win32k/main/dllmain.c index 491b5765741..5ee3bb38c4f 100644 --- a/reactos/subsystems/win32/win32k/main/dllmain.c +++ b/reactos/subsystems/win32/win32k/main/dllmain.c @@ -28,7 +28,7 @@ #include PGDI_HANDLE_TABLE INTERNAL_CALL GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject); -BOOL INTERNAL_CALL GDI_CleanupForProcess (PGDI_HANDLE_TABLE HandleTable, struct _EPROCESS *Process); +BOOL INTERNAL_CALL GDI_CleanupForProcess (struct _EPROCESS *Process); /* FIXME */ PGDI_HANDLE_TABLE GdiHandleTable = NULL; PSECTION_OBJECT GdiTableSection = NULL; @@ -136,7 +136,7 @@ Win32kProcessCallback(struct _EPROCESS *Process, /* no process windows should exist at this point, or the function will assert! */ DestroyProcessClasses(Win32Process); - GDI_CleanupForProcess(GdiHandleTable, Process); + GDI_CleanupForProcess(Process); co_IntGraphicsCheck(FALSE); diff --git a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c index feec477175c..3bc669b342d 100644 --- a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c +++ b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c @@ -490,13 +490,13 @@ IntDestroyCurIconObject(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT CurIcon, BOOL /* delete bitmaps */ if(bmpMask) { - GDIOBJ_SetOwnership(GdiHandleTable, bmpMask, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(bmpMask, PsGetCurrentProcess()); NtGdiDeleteObject(bmpMask); CurIcon->IconInfo.hbmMask = NULL; } if(bmpColor) { - GDIOBJ_SetOwnership(GdiHandleTable, bmpColor, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(bmpColor, PsGetCurrentProcess()); NtGdiDeleteObject(bmpColor); CurIcon->IconInfo.hbmColor = NULL; } @@ -597,7 +597,7 @@ NtUserCreateCursorIconHandle(PICONINFO IconInfo OPTIONAL, BOOL Indirect) CurIcon->Size.cx = bmp->SurfObj.sizlBitmap.cx; CurIcon->Size.cy = bmp->SurfObj.sizlBitmap.cy; BITMAPOBJ_UnlockBitmap(bmp); - GDIOBJ_SetOwnership(GdiHandleTable, CurIcon->IconInfo.hbmColor, NULL); + GDIOBJ_SetOwnership(CurIcon->IconInfo.hbmColor, NULL); } if(CurIcon->IconInfo.hbmMask && (bmp = BITMAPOBJ_LockBitmap(CurIcon->IconInfo.hbmMask))) @@ -608,7 +608,7 @@ NtUserCreateCursorIconHandle(PICONINFO IconInfo OPTIONAL, BOOL Indirect) CurIcon->Size.cy = bmp->SurfObj.sizlBitmap.cy / 2; } BITMAPOBJ_UnlockBitmap(bmp); - GDIOBJ_SetOwnership(GdiHandleTable, CurIcon->IconInfo.hbmMask, NULL); + GDIOBJ_SetOwnership(CurIcon->IconInfo.hbmMask, NULL); } } else @@ -1186,7 +1186,7 @@ NtUserSetCursorContents( CurIcon->Size.cx = bmp->SurfObj.sizlBitmap.cx; CurIcon->Size.cy = bmp->SurfObj.sizlBitmap.cy; BITMAPOBJ_UnlockBitmap(bmp); - GDIOBJ_SetOwnership(GdiHandleTable, CurIcon->IconInfo.hbmColor, NULL); + GDIOBJ_SetOwnership(CurIcon->IconInfo.hbmColor, NULL); } else { @@ -1198,7 +1198,7 @@ NtUserSetCursorContents( CurIcon->Size.cy = bmp->SurfObj.sizlBitmap.cy / 2; BITMAPOBJ_UnlockBitmap(bmp); - GDIOBJ_SetOwnership(GdiHandleTable, CurIcon->IconInfo.hbmMask, NULL); + GDIOBJ_SetOwnership(CurIcon->IconInfo.hbmMask, NULL); } Ret = TRUE; diff --git a/reactos/subsystems/win32/win32k/ntuser/misc.c b/reactos/subsystems/win32/win32k/ntuser/misc.c index f33b8296f64..7e778a39e9a 100644 --- a/reactos/subsystems/win32/win32k/ntuser/misc.c +++ b/reactos/subsystems/win32/win32k/ntuser/misc.c @@ -1277,7 +1277,7 @@ IntSystemParametersInfo( BITMAPOBJ_UnlockBitmap(bmp); /* change the bitmap's ownership */ - GDIOBJ_SetOwnership(GdiHandleTable, hNewBitmap, NULL); + GDIOBJ_SetOwnership(hNewBitmap, NULL); } hOldBitmap = (HBITMAP)InterlockedExchange((LONG*)&WinStaObject->hbmWallpaper, (LONG)hNewBitmap); if(hOldBitmap != NULL) diff --git a/reactos/subsystems/win32/win32k/ntuser/painting.c b/reactos/subsystems/win32/win32k/ntuser/painting.c index 3b213e85f0e..06f885a6ffc 100644 --- a/reactos/subsystems/win32/win32k/ntuser/painting.c +++ b/reactos/subsystems/win32/win32k/ntuser/painting.c @@ -211,7 +211,7 @@ IntGetNCUpdateRgn(PWINDOW_OBJECT Window, BOOL Validate) if (NtGdiCombineRgn(Window->UpdateRegion, Window->UpdateRegion, hRgnWindow, RGN_AND) == NULLREGION) { - GDIOBJ_SetOwnership(GdiHandleTable, Window->UpdateRegion, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(Window->UpdateRegion, PsGetCurrentProcess()); NtGdiDeleteObject(Window->UpdateRegion); Window->UpdateRegion = NULL; if (!(Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)) @@ -272,7 +272,7 @@ co_IntPaintWindows(PWINDOW_OBJECT Window, ULONG Flags, BOOL Recurse) if ((HANDLE) 1 != TempRegion && NULL != TempRegion) { /* NOTE: The region can already be deleted! */ - GDIOBJ_FreeObj(GdiHandleTable, TempRegion, GDI_OBJECT_TYPE_REGION | GDI_OBJECT_TYPE_SILENT); + GDIOBJ_FreeObj(TempRegion, GDI_OBJECT_TYPE_REGION | GDI_OBJECT_TYPE_SILENT); } } @@ -398,13 +398,13 @@ IntInvalidateWindows(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags) if (Window->UpdateRegion == NULL) { Window->UpdateRegion = NtGdiCreateRectRgn(0, 0, 0, 0); - GDIOBJ_SetOwnership(GdiHandleTable, Window->UpdateRegion, NULL); + GDIOBJ_SetOwnership(Window->UpdateRegion, NULL); } if (NtGdiCombineRgn(Window->UpdateRegion, Window->UpdateRegion, hRgn, RGN_OR) == NULLREGION) { - GDIOBJ_SetOwnership(GdiHandleTable, Window->UpdateRegion, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(Window->UpdateRegion, PsGetCurrentProcess()); NtGdiDeleteObject(Window->UpdateRegion); Window->UpdateRegion = NULL; } @@ -424,7 +424,7 @@ IntInvalidateWindows(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags) if (NtGdiCombineRgn(Window->UpdateRegion, Window->UpdateRegion, hRgn, RGN_DIFF) == NULLREGION) { - GDIOBJ_SetOwnership(GdiHandleTable, Window->UpdateRegion, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(Window->UpdateRegion, PsGetCurrentProcess()); NtGdiDeleteObject(Window->UpdateRegion); Window->UpdateRegion = NULL; } @@ -801,7 +801,7 @@ NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* UnsafePs) if (hRgn != (HANDLE)1 && hRgn != NULL) { /* NOTE: The region can already by deleted! */ - GDIOBJ_FreeObj(GdiHandleTable, hRgn, GDI_OBJECT_TYPE_REGION | GDI_OBJECT_TYPE_SILENT); + GDIOBJ_FreeObj(hRgn, GDI_OBJECT_TYPE_REGION | GDI_OBJECT_TYPE_SILENT); } } @@ -833,7 +833,7 @@ NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* UnsafePs) { IntGetClientRect(Window, &Ps.rcPaint); } - GDIOBJ_SetOwnership(GdiHandleTable, Window->UpdateRegion, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(Window->UpdateRegion, PsGetCurrentProcess()); /* The region is part of the dc now and belongs to the process! */ Window->UpdateRegion = NULL; } diff --git a/reactos/subsystems/win32/win32k/ntuser/windc.c b/reactos/subsystems/win32/win32k/ntuser/windc.c index 74366ae2f44..9dc8ab49405 100644 --- a/reactos/subsystems/win32/win32k/ntuser/windc.c +++ b/reactos/subsystems/win32/win32k/ntuser/windc.c @@ -590,7 +590,7 @@ DceFreeDCE(PDCE pdce, BOOLEAN Force) SetDCHook(pdce->hDC, NULL, 0L); #endif - if (Force && !GDIOBJ_OwnedByCurrentProcess(GdiHandleTable, pdce->hDC)) + if (Force && !GDIOBJ_OwnedByCurrentProcess(pdce->hDC)) { DPRINT1("Change ownership for DCE!\n"); diff --git a/reactos/subsystems/win32/win32k/objects/bitmaps.c b/reactos/subsystems/win32/win32k/objects/bitmaps.c index 6fc4feedb90..a748c8827da 100644 --- a/reactos/subsystems/win32/win32k/objects/bitmaps.c +++ b/reactos/subsystems/win32/win32k/objects/bitmaps.c @@ -634,7 +634,7 @@ BITMAPOBJ_CopyBitmap(HBITMAP hBitmap) return 0; } - Bitmap = GDIOBJ_LockObj(GdiHandleTable, hBitmap, GDI_OBJECT_TYPE_BITMAP); + Bitmap = GDIOBJ_LockObj(hBitmap, GDI_OBJECT_TYPE_BITMAP); if (Bitmap == NULL) { return 0; @@ -657,14 +657,14 @@ BITMAPOBJ_CopyBitmap(HBITMAP hBitmap) { PBYTE buf; - resBitmap = GDIOBJ_LockObj(GdiHandleTable, res, GDI_OBJECT_TYPE_BITMAP); + resBitmap = GDIOBJ_LockObj(res, GDI_OBJECT_TYPE_BITMAP); if (resBitmap) { buf = ExAllocatePoolWithTag (PagedPool, bm.bmWidthBytes * abs(bm.bmHeight), TAG_BITMAP); if (buf == NULL) { - GDIOBJ_UnlockObjByPtr(GdiHandleTable, resBitmap); - GDIOBJ_UnlockObjByPtr(GdiHandleTable, Bitmap); + GDIOBJ_UnlockObjByPtr((POBJ)resBitmap); + GDIOBJ_UnlockObjByPtr((POBJ)Bitmap); NtGdiDeleteObject(res); return 0; } @@ -672,7 +672,7 @@ BITMAPOBJ_CopyBitmap(HBITMAP hBitmap) IntSetBitmapBits (resBitmap, bm.bmWidthBytes * abs(bm.bmHeight), buf); ExFreePool (buf); resBitmap->flFlags = Bitmap->flFlags; - GDIOBJ_UnlockObjByPtr(GdiHandleTable, resBitmap); + GDIOBJ_UnlockObjByPtr((POBJ)resBitmap); } else { @@ -681,7 +681,7 @@ BITMAPOBJ_CopyBitmap(HBITMAP hBitmap) } } - GDIOBJ_UnlockObjByPtr(GdiHandleTable, Bitmap); + GDIOBJ_UnlockObjByPtr((POBJ)Bitmap); return res; } diff --git a/reactos/subsystems/win32/win32k/objects/brush.c b/reactos/subsystems/win32/win32k/objects/brush.c index 89160d30bfb..70ee9d1529e 100644 --- a/reactos/subsystems/win32/win32k/objects/brush.c +++ b/reactos/subsystems/win32/win32k/objects/brush.c @@ -42,7 +42,7 @@ BRUSH_Cleanup(PVOID ObjectBody) if(pBrush->flAttrs & (GDIBRUSH_IS_HATCH | GDIBRUSH_IS_BITMAP)) { ASSERT(pBrush->hbmPattern); - GDIOBJ_SetOwnership(GdiHandleTable, pBrush->hbmPattern, PsGetCurrentProcess()); + GDIOBJ_SetOwnership(pBrush->hbmPattern, PsGetCurrentProcess()); NtGdiDeleteObject(pBrush->hbmPattern); } @@ -366,7 +366,7 @@ IntGdiCreateDIBBrush( BrushObject->hbmPattern = hPattern; /* FIXME: Fill in the rest of fields!!! */ - GDIOBJ_SetOwnership(GdiHandleTable, hPattern, NULL); + GDIOBJ_SetOwnership(hPattern, NULL); BRUSHOBJ_UnlockBrush(BrushObject); @@ -409,7 +409,7 @@ IntGdiCreateHatchBrush( BrushObject->hbmPattern = hPattern; BrushObject->BrushAttr.lbColor = Color & 0xFFFFFF; - GDIOBJ_SetOwnership(GdiHandleTable, hPattern, NULL); + GDIOBJ_SetOwnership(hPattern, NULL); BRUSHOBJ_UnlockBrush(BrushObject); @@ -446,7 +446,7 @@ IntGdiCreatePatternBrush( BrushObject->hbmPattern = hPattern; /* FIXME: Fill in the rest of fields!!! */ - GDIOBJ_SetOwnership(GdiHandleTable, hPattern, NULL); + GDIOBJ_SetOwnership(hPattern, NULL); BRUSHOBJ_UnlockBrush(BrushObject); diff --git a/reactos/subsystems/win32/win32k/objects/cliprgn.c b/reactos/subsystems/win32/win32k/objects/cliprgn.c index f1a043c50b2..c110265d294 100644 --- a/reactos/subsystems/win32/win32k/objects/cliprgn.c +++ b/reactos/subsystems/win32/win32k/objects/cliprgn.c @@ -81,7 +81,7 @@ IntGdiSelectVisRgn(HDC hdc, HRGN hrgn) if (dc->w.hVisRgn == NULL) { dc->w.hVisRgn = NtGdiCreateRectRgn(0, 0, 0, 0); - GDIOBJ_CopyOwnership(GdiHandleTable, hdc, dc->w.hVisRgn); + GDIOBJ_CopyOwnership(hdc, dc->w.hVisRgn); } retval = NtGdiCombineRgn(dc->w.hVisRgn, hrgn, 0, RGN_COPY); diff --git a/reactos/subsystems/win32/win32k/objects/color.c b/reactos/subsystems/win32/win32k/objects/color.c index 4ebd7a80f38..7809eff56a6 100644 --- a/reactos/subsystems/win32/win32k/objects/color.c +++ b/reactos/subsystems/win32/win32k/objects/color.c @@ -706,7 +706,7 @@ BOOL STDCALL NtGdiUnrealizeObject(HGDIOBJ hgdiobj) { - GDIOBJHDR * ptr; + POBJ pObject; DWORD objectType; BOOL Ret = FALSE; @@ -714,15 +714,15 @@ NtGdiUnrealizeObject(HGDIOBJ hgdiobj) if(!hgdiobj) return Ret; - ptr = GDIOBJ_LockObj(GdiHandleTable, hgdiobj, GDI_OBJECT_TYPE_DONTCARE); - if (ptr == 0) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - return Ret; - } + pObject = GDIOBJ_LockObj(hgdiobj, GDI_OBJECT_TYPE_DONTCARE); + if (pObject == NULL) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + return Ret; + } objectType = GDIOBJ_GetObjectType(hgdiobj); switch(objectType) - { + { /* msdn.microsoft.com, "Windows 2000/XP: If hgdiobj is a brush, UnrealizeObject does nothing, @@ -738,9 +738,9 @@ NtGdiUnrealizeObject(HGDIOBJ hgdiobj) default: DPRINT1("Magic 0x%08x not implemented\n", objectType); break; - } + } - GDIOBJ_UnlockObjByPtr(GdiHandleTable, ptr); + GDIOBJ_UnlockObjByPtr(pObject); return Ret; } diff --git a/reactos/subsystems/win32/win32k/objects/dc.c b/reactos/subsystems/win32/win32k/objects/dc.c index 10270e5065f..a0d1e185124 100644 --- a/reactos/subsystems/win32/win32k/objects/dc.c +++ b/reactos/subsystems/win32/win32k/objects/dc.c @@ -1019,7 +1019,7 @@ NtGdiDeleteObjectApp(HANDLE DCHandle) if(IsObjectDead((HGDIOBJ)DCHandle)) return TRUE; - if (!GDIOBJ_OwnedByCurrentProcess(GdiHandleTable, DCHandle)) + if (!GDIOBJ_OwnedByCurrentProcess(DCHandle)) { SetLastWin32Error(ERROR_INVALID_HANDLE); return FALSE; @@ -1669,7 +1669,7 @@ IntGdiGetObject(IN HANDLE Handle, INT Result = 0; DWORD dwObjectType; - pGdiObject = GDIOBJ_LockObj(GdiHandleTable, Handle, GDI_OBJECT_TYPE_DONTCARE); + pGdiObject = GDIOBJ_LockObj(Handle, GDI_OBJECT_TYPE_DONTCARE); if (!pGdiObject) { SetLastWin32Error(ERROR_INVALID_HANDLE); @@ -1711,7 +1711,7 @@ IntGdiGetObject(IN HANDLE Handle, break; } - GDIOBJ_UnlockObjByPtr(GdiHandleTable, pGdiObject); + GDIOBJ_UnlockObjByPtr(pGdiObject); return Result; } @@ -2375,7 +2375,7 @@ DC_AllocDC(PUNICODE_STRING Driver) RtlCopyMemory(Buf, Driver->Buffer, Driver->MaximumLength); } - hDC = (HDC) GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TYPE_DC); + hDC = (HDC) GDIOBJ_AllocObj(GDI_OBJECT_TYPE_DC); if (hDC == NULL) { if(Buf) @@ -2546,7 +2546,7 @@ DC_FreeDC(HDC DCToFree) DC_FreeDcAttr(DCToFree); if(!IsObjectDead( DCToFree )) { - if (!GDIOBJ_FreeObj(GdiHandleTable, DCToFree, GDI_OBJECT_TYPE_DC)) + if (!GDIOBJ_FreeObj(DCToFree, GDI_OBJECT_TYPE_DC)) { DPRINT1("DC_FreeDC failed\n"); } @@ -2629,21 +2629,21 @@ DC_SetOwnership(HDC hDC, PEPROCESS Owner) { PDC DC; - GDIOBJ_SetOwnership(GdiHandleTable, hDC, Owner); + GDIOBJ_SetOwnership(hDC, Owner); DC = DC_LockDc(hDC); if (NULL != DC) { if (NULL != DC->w.hClipRgn) { - GDIOBJ_CopyOwnership(GdiHandleTable, hDC, DC->w.hClipRgn); + GDIOBJ_CopyOwnership(hDC, DC->w.hClipRgn); } if (NULL != DC->w.hVisRgn) { - GDIOBJ_CopyOwnership(GdiHandleTable, hDC, DC->w.hVisRgn); + GDIOBJ_CopyOwnership(hDC, DC->w.hVisRgn); } if (NULL != DC->w.hGCClipRgn) { - GDIOBJ_CopyOwnership(GdiHandleTable, hDC, DC->w.hGCClipRgn); + GDIOBJ_CopyOwnership(hDC, DC->w.hGCClipRgn); } DC_UnlockDc(DC); } diff --git a/reactos/subsystems/win32/win32k/objects/gdiobj.c b/reactos/subsystems/win32/win32k/objects/gdiobj.c index ebe50d81080..e172c4fa116 100644 --- a/reactos/subsystems/win32/win32k/objects/gdiobj.c +++ b/reactos/subsystems/win32/win32k/objects/gdiobj.c @@ -166,7 +166,7 @@ GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject) if (ObjTypeInfo[ObjType].bUseLookaside) { ExInitializePagedLookasideList(HandleTable->LookasideLists + ObjType, NULL, NULL, 0, - ObjTypeInfo[ObjType].ulBodySize + sizeof(GDIOBJHDR), ObjTypeInfo[ObjType].Tag, 0); + ObjTypeInfo[ObjType].ulBodySize, ObjTypeInfo[ObjType].Tag, 0); } } @@ -179,10 +179,9 @@ GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject) } static __inline PPAGED_LOOKASIDE_LIST -FindLookasideList(PGDI_HANDLE_TABLE HandleTable, - ULONG TypeIndex) +FindLookasideList(ULONG TypeIndex) { - return HandleTable->LookasideLists + TypeIndex; + return GdiHandleTable->LookasideLists + TypeIndex; } static __inline BOOL @@ -338,7 +337,7 @@ LockErrorDebugOutput(HGDIOBJ hObj, PGDI_TABLE_ENTRY Entry, LPSTR Function) ULONG FASTCALL -InterlockedPopFreeEntry(PGDI_HANDLE_TABLE HandleTable) +InterlockedPopFreeEntry() { ULONG idxFirstFree, idxNextFree, idxPrev; PGDI_TABLE_ENTRY pFreeEntry; @@ -347,24 +346,24 @@ InterlockedPopFreeEntry(PGDI_HANDLE_TABLE HandleTable) do { - idxFirstFree = HandleTable->FirstFree; + idxFirstFree = GdiHandleTable->FirstFree; if (idxFirstFree) { - pFreeEntry = HandleTable->Entries + idxFirstFree; + pFreeEntry = GdiHandleTable->Entries + idxFirstFree; ASSERT(((ULONG)pFreeEntry->KernelData & ~GDI_HANDLE_INDEX_MASK) == 0); idxNextFree = (ULONG)pFreeEntry->KernelData; - idxPrev = (ULONG)_InterlockedCompareExchange((LONG*)&HandleTable->FirstFree, idxNextFree, idxFirstFree); + idxPrev = (ULONG)_InterlockedCompareExchange((LONG*)&GdiHandleTable->FirstFree, idxNextFree, idxFirstFree); } else { - idxFirstFree = HandleTable->FirstUnused; + idxFirstFree = GdiHandleTable->FirstUnused; idxNextFree = idxFirstFree + 1; if (idxNextFree >= GDI_HANDLE_COUNT) { DPRINT1("No more gdi handles left!\n"); return 0; } - idxPrev = (ULONG)_InterlockedCompareExchange((LONG*)&HandleTable->FirstUnused, idxNextFree, idxFirstFree); + idxPrev = (ULONG)_InterlockedCompareExchange((LONG*)&GdiHandleTable->FirstUnused, idxNextFree, idxFirstFree); } } while (idxPrev != idxFirstFree); @@ -376,24 +375,24 @@ InterlockedPopFreeEntry(PGDI_HANDLE_TABLE HandleTable) The entry must be unlocked and the base type field must be 0 */ VOID FASTCALL -InterlockedPushFreeEntry(PGDI_HANDLE_TABLE HandleTable, ULONG idxToFree) +InterlockedPushFreeEntry(ULONG idxToFree) { ULONG idxFirstFree, idxPrev; PGDI_TABLE_ENTRY pFreeEntry; DPRINT("Enter InterlockedPushFreeEntry\n"); - pFreeEntry = HandleTable->Entries + idxToFree; + pFreeEntry = GdiHandleTable->Entries + idxToFree; ASSERT((pFreeEntry->Type & GDI_ENTRY_BASETYPE_MASK) == 0); ASSERT(pFreeEntry->ProcessId == 0); pFreeEntry->UserData = NULL; do { - idxFirstFree = HandleTable->FirstFree; + idxFirstFree = GdiHandleTable->FirstFree; pFreeEntry->KernelData = (PVOID)idxFirstFree; - idxPrev = (ULONG)_InterlockedCompareExchange((LONG*)&HandleTable->FirstFree, idxToFree, idxFirstFree); + idxPrev = (ULONG)_InterlockedCompareExchange((LONG*)&GdiHandleTable->FirstFree, idxToFree, idxFirstFree); } while (idxPrev != idxFirstFree); } @@ -427,10 +426,10 @@ GDIOBJ_ValidateHandle(HGDIOBJ hObj, ULONG ObjectType) * \todo return the object pointer and lock it by default. */ HGDIOBJ INTERNAL_CALL -GDIOBJ_AllocObj(PGDI_HANDLE_TABLE HandleTable, ULONG ObjectType) +GDIOBJ_AllocObj(ULONG ObjectType) { PW32PROCESS W32Process; - PGDIOBJHDR newObject = NULL; + POBJ newObject = NULL; PPAGED_LOOKASIDE_LIST LookasideList = NULL; HANDLE CurrentProcessId, LockedProcessId; ULONG TypeIndex; @@ -449,7 +448,7 @@ GDIOBJ_AllocObj(PGDI_HANDLE_TABLE HandleTable, ULONG ObjectType) TypeIndex = GDI_OBJECT_GET_TYPE_INDEX(ObjectType); if (ObjTypeInfo[TypeIndex].bUseLookaside) { - LookasideList = FindLookasideList(HandleTable, TypeIndex); + LookasideList = FindLookasideList(TypeIndex); if(LookasideList != NULL) { newObject = ExAllocateFromPagedLookasideList(LookasideList); @@ -458,37 +457,31 @@ GDIOBJ_AllocObj(PGDI_HANDLE_TABLE HandleTable, ULONG ObjectType) else { newObject = ExAllocatePoolWithTag(PagedPool, - ObjTypeInfo[TypeIndex].ulBodySize + sizeof(GDIOBJHDR), + ObjTypeInfo[TypeIndex].ulBodySize, ObjTypeInfo[TypeIndex].Tag); } if(newObject != NULL) { UINT Index; PGDI_TABLE_ENTRY Entry; - PGDIOBJ ObjectBody; LONG TypeInfo; CurrentProcessId = PsGetCurrentProcessId(); LockedProcessId = (HANDLE)((ULONG_PTR)CurrentProcessId | 0x1); - newObject->LockingThread = NULL; - newObject->Locks = 0; - - ObjectBody = GDIHdrToBdy(newObject); - - RtlZeroMemory(ObjectBody, GetObjectSize(TypeIndex)); + RtlZeroMemory(newObject, GetObjectSize(TypeIndex)); /* On Windows the higher 16 bit of the type field don't contain the full type from the handle, but the base type. (type = BRSUH, PEN, EXTPEN, basetype = BRUSH) */ TypeInfo = (ObjectType & GDI_HANDLE_BASETYPE_MASK) | (ObjectType >> GDI_ENTRY_UPPER_SHIFT); - Index = InterlockedPopFreeEntry(HandleTable); + Index = InterlockedPopFreeEntry(); if (Index != 0) { HANDLE PrevProcId; - Entry = &HandleTable->Entries[Index]; + Entry = &GdiHandleTable->Entries[Index]; LockHandle: PrevProcId = _InterlockedCompareExchangePointer((PVOID*)&Entry->ProcessId, LockedProcessId, 0); @@ -496,7 +489,7 @@ LockHandle: { HGDIOBJ Handle; - Entry->KernelData = ObjectBody; + Entry->KernelData = newObject; /* copy the reuse-counter */ TypeInfo |= Entry->Type & GDI_ENTRY_REUSE_MASK; @@ -518,7 +511,7 @@ LockHandle: } Handle = (HGDIOBJ)((Index & 0xFFFF) | (TypeInfo << GDI_ENTRY_UPPER_SHIFT)); - DPRINT("GDIOBJ_AllocObj: 0x%x ob: 0x%x\n", Handle, ObjectBody); + DPRINT("GDIOBJ_AllocObj: 0x%x ob: 0x%x\n", Handle, newObject); return Handle; } else @@ -548,7 +541,7 @@ LockHandle: } DPRINT1("Failed to insert gdi object into the handle table, no handles left!\n"); #ifdef GDI_DEBUG - IntDumpHandleTable(HandleTable); + IntDumpHandleTable(GdiHandleTable); #endif /* GDI_DEBUG */ } else @@ -569,7 +562,7 @@ LockHandle: * to the calling process. */ BOOL INTERNAL_CALL -GDIOBJ_FreeObj(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ExpectedType) +GDIOBJ_FreeObj(HGDIOBJ hObj, DWORD ExpectedType) { PGDI_TABLE_ENTRY Entry; PPAGED_LOOKASIDE_LIST LookasideList; @@ -615,7 +608,7 @@ GDIOBJ_FreeObj(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ExpectedType) return FALSE; } - Entry = GDI_HANDLE_GET_ENTRY(HandleTable, hObj); + Entry = GDI_HANDLE_GET_ENTRY(GdiHandleTable, hObj); LockHandle: /* lock the object, we must not delete global objects, so don't exchange the locking @@ -627,11 +620,11 @@ LockHandle: ((Entry->Type << GDI_ENTRY_UPPER_SHIFT) == HandleUpper) && ((Entry->Type & GDI_ENTRY_BASETYPE_MASK) == (HandleUpper & GDI_ENTRY_BASETYPE_MASK)) ) { - PGDIOBJHDR GdiHdr; + POBJ Object; - GdiHdr = GDIBdyToHdr(Entry->KernelData); + Object = Entry->KernelData; - if(GdiHdr->Locks == 0) + if(Object->cExclusiveLock == 0) { BOOL Ret; PW32PROCESS W32Process = PsGetCurrentProcessWin32Process(); @@ -643,7 +636,7 @@ LockHandle: (void)_InterlockedExchangePointer((PVOID*)&Entry->ProcessId, NULL); /* push this entry to the free list */ - InterlockedPushFreeEntry(HandleTable, GDI_ENTRY_TO_INDEX(HandleTable, Entry)); + InterlockedPushFreeEntry(GDI_ENTRY_TO_INDEX(GdiHandleTable, Entry)); if(W32Process != NULL) { @@ -652,20 +645,20 @@ LockHandle: /* call the cleanup routine. */ TypeIndex = GDI_OBJECT_GET_TYPE_INDEX(HandleType); - Ret = RunCleanupCallback(GDIHdrToBdy(GdiHdr), TypeIndex); + Ret = RunCleanupCallback(Object, TypeIndex); /* Now it's time to free the memory */ if (ObjTypeInfo[TypeIndex].bUseLookaside) { - LookasideList = FindLookasideList(HandleTable, TypeIndex); + LookasideList = FindLookasideList(TypeIndex); if(LookasideList != NULL) { - ExFreeToPagedLookasideList(LookasideList, GdiHdr); + ExFreeToPagedLookasideList(LookasideList, Object); } } else { - ExFreePool(GdiHdr); + ExFreePool(Object); } return Ret; @@ -675,7 +668,7 @@ LockHandle: /* * The object is currently locked, so freeing is forbidden! */ - DPRINT1("GdiHdr->Locks: %d\n", GdiHdr->Locks); + DPRINT1("Object->cExclusiveLock = %d\n", Object->cExclusiveLock); #ifdef GDI_DEBUG // DPRINT1("Locked from:\n"); // KeRosDumpStackFrames(GDIHandleLocker[GDI_HANDLE_GET_INDEX(hObj)], GDI_STACK_LEVELS); @@ -758,7 +751,7 @@ NtGdiDeleteObject(HGDIOBJ hObject) if(!IsObjectDead(hObject)) { return NULL != hObject - ? GDIOBJ_FreeObj(GdiHandleTable, hObject, GDI_OBJECT_TYPE_DONTCARE) : FALSE; + ? GDIOBJ_FreeObj(hObject, GDI_OBJECT_TYPE_DONTCARE) : FALSE; } else { @@ -772,7 +765,7 @@ NtGdiDeleteObject(HGDIOBJ hObject) * \param Process - PID of the process that will be destroyed. */ BOOL INTERNAL_CALL -GDI_CleanupForProcess (PGDI_HANDLE_TABLE HandleTable, struct _EPROCESS *Process) +GDI_CleanupForProcess (struct _EPROCESS *Process) { PGDI_TABLE_ENTRY Entry, End; PEPROCESS CurrentProcess; @@ -795,8 +788,8 @@ GDI_CleanupForProcess (PGDI_HANDLE_TABLE HandleTable, struct _EPROCESS *Process) we should delete it directly here! */ ProcId = Process->UniqueProcessId; - End = &HandleTable->Entries[GDI_HANDLE_COUNT]; - for(Entry = &HandleTable->Entries[RESERVE_ENTRIES_COUNT]; + End = &GdiHandleTable->Entries[GDI_HANDLE_COUNT]; + for(Entry = &GdiHandleTable->Entries[RESERVE_ENTRIES_COUNT]; Entry != End; Entry++, Index++) { @@ -811,7 +804,7 @@ GDI_CleanupForProcess (PGDI_HANDLE_TABLE HandleTable, struct _EPROCESS *Process) simply ignore this fact here. */ ObjectHandle = (HGDIOBJ)(Index | (Entry->Type << GDI_ENTRY_UPPER_SHIFT)); - if(GDIOBJ_FreeObj(HandleTable, ObjectHandle, GDI_OBJECT_TYPE_DONTCARE) && + if(GDIOBJ_FreeObj(ObjectHandle, GDI_OBJECT_TYPE_DONTCARE) && W32Process->GDIObjects == 0) { /* there are no more gdi handles for this process, bail */ @@ -842,12 +835,12 @@ GDI_CleanupForProcess (PGDI_HANDLE_TABLE HandleTable, struct _EPROCESS *Process) * \todo Get rid of the ExpectedType parameter! */ PGDIOBJ INTERNAL_CALL -GDIOBJ_LockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ExpectedType) +GDIOBJ_LockObj (HGDIOBJ hObj, DWORD ExpectedType) { ULONG HandleIndex; PGDI_TABLE_ENTRY Entry; HANDLE ProcessId, HandleProcessId, LockedProcessId, PrevProcId; - PGDIOBJ Object = NULL; + POBJ Object = NULL; ULONG HandleType, HandleUpper; HandleIndex = GDI_HANDLE_GET_INDEX(hObj); @@ -858,7 +851,7 @@ GDIOBJ_LockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ExpectedType) if (HandleIndex >= GDI_HANDLE_COUNT) return NULL; - Entry = &HandleTable->Entries[HandleIndex]; + Entry = &GdiHandleTable->Entries[HandleIndex]; /* Check if we have the requested type */ if ( (ExpectedType != GDI_OBJECT_TYPE_DONTCARE && @@ -921,32 +914,29 @@ GDIOBJ_LockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ExpectedType) if ( (Entry->KernelData != NULL) && ((Entry->Type << GDI_ENTRY_UPPER_SHIFT) == HandleUpper) ) { - PGDIOBJHDR GdiHdr = GDIBdyToHdr(Entry->KernelData); - PETHREAD Thread = PsGetCurrentThread(); + PW32THREAD Thread = PsGetCurrentThreadWin32Thread(); + Object = Entry->KernelData; - if (GdiHdr->Locks == 0) + if (Object->cExclusiveLock == 0) { - GdiHdr->LockingThread = Thread; - GdiHdr->Locks = 1; + Object->Tid = Thread; + Object->cExclusiveLock = 1; #ifdef GDI_DEBUG CaptureStackBackTace((PVOID*)GDIHandleLocker[GDI_HANDLE_GET_INDEX(hObj)], GDI_STACK_LEVELS); #endif } else { - _InterlockedIncrement((PLONG)&GdiHdr->Locks); - if (GdiHdr->LockingThread != Thread) + if (Object->Tid != Thread) { - _InterlockedDecrement((PLONG)&GdiHdr->Locks); - /* Unlock the handle table entry. */ (void)_InterlockedExchangePointer((PVOID*)&Entry->ProcessId, PrevProcId); DelayExecution(); continue; } + _InterlockedIncrement((PLONG)&Object->cExclusiveLock); } - Object = Entry->KernelData; } else { @@ -991,12 +981,12 @@ GDIOBJ_LockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ExpectedType) * \todo Get rid of the ExpectedType parameter! */ PGDIOBJ INTERNAL_CALL -GDIOBJ_ShareLockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD ExpectedType) +GDIOBJ_ShareLockObj (HGDIOBJ hObj, DWORD ExpectedType) { ULONG HandleIndex; PGDI_TABLE_ENTRY Entry; HANDLE ProcessId, HandleProcessId, LockedProcessId, PrevProcId; - PGDIOBJ Object = NULL; + POBJ Object = NULL; ULONG_PTR HandleType, HandleUpper; HandleIndex = GDI_HANDLE_GET_INDEX(hObj); @@ -1017,7 +1007,7 @@ GDIOBJ_ShareLockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD Expected return NULL; } - Entry = &HandleTable->Entries[HandleIndex]; + Entry = &GdiHandleTable->Entries[HandleIndex]; ProcessId = (HANDLE)((ULONG_PTR)PsGetCurrentProcessId() & ~1); HandleProcessId = (HANDLE)((ULONG_PTR)Entry->ProcessId & ~1); @@ -1059,18 +1049,17 @@ GDIOBJ_ShareLockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD Expected if ( (Entry->KernelData != NULL) && (HandleUpper == (Entry->Type << GDI_ENTRY_UPPER_SHIFT)) ) { - PGDIOBJHDR GdiHdr = GDIBdyToHdr(Entry->KernelData); + Object = (POBJ)Entry->KernelData; #ifdef GDI_DEBUG - if (_InterlockedIncrement((PLONG)&GdiHdr->Locks) == 1) + if (_InterlockedIncrement((PLONG)&Object->ulShareCount) == 1) { memset(GDIHandleLocker[HandleIndex], 0x00, GDI_STACK_LEVELS * sizeof(ULONG)); RtlCaptureStackBackTrace(1, GDI_STACK_LEVELS, (PVOID*)GDIHandleLocker[HandleIndex], NULL); } #else - _InterlockedIncrement((PLONG)&GdiHdr->Locks); + _InterlockedIncrement(Object->ulShareCount); #endif - Object = Entry->KernelData; } else { @@ -1110,23 +1099,25 @@ GDIOBJ_ShareLockObj (PGDI_HANDLE_TABLE HandleTable, HGDIOBJ hObj, DWORD Expected * \param Object Object pointer (as returned by GDIOBJ_LockObj). */ VOID INTERNAL_CALL -GDIOBJ_UnlockObjByPtr(PGDI_HANDLE_TABLE HandleTable, PGDIOBJ Object) +GDIOBJ_UnlockObjByPtr(POBJ Object) { - PGDIOBJHDR GdiHdr = GDIBdyToHdr(Object); -#ifdef GDI_DEBUG - if (_InterlockedDecrement((PLONG)&GdiHdr->Locks) == 0) - { - memset(GDIHandleLocker[GDI_HANDLE_GET_INDEX(Object)], 0x00, GDI_STACK_LEVELS * sizeof(ULONG)); - RtlCaptureStackBackTrace(1, GDI_STACK_LEVELS, (PVOID*)GDIHandleLocker[GDI_HANDLE_GET_INDEX(Object)], NULL); - } -#else - if (_InterlockedDecrement((PLONG)&GdiHdr->Locks) < 0) - DPRINT1("Trying to unlock non-existant object\n"); -#endif + if (_InterlockedDecrement((PLONG)&Object->cExclusiveLock) < 0) + { + DPRINT1("Trying to unlock non-existant object\n"); + } +} + +VOID INTERNAL_CALL +GDIOBJ_ShareUnlockObjByPtr(POBJ Object) +{ + if (_InterlockedDecrement((PLONG)&Object->ulShareCount) < 0) + { + DPRINT1("Trying to unlock non-existant object\n"); + } } BOOL INTERNAL_CALL -GDIOBJ_OwnedByCurrentProcess(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ ObjectHandle) +GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle) { PGDI_TABLE_ENTRY Entry; HANDLE ProcessId; @@ -1138,7 +1129,7 @@ GDIOBJ_OwnedByCurrentProcess(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ ObjectHandle { ProcessId = PsGetCurrentProcessId(); - Entry = GDI_HANDLE_GET_ENTRY(HandleTable, ObjectHandle); + Entry = GDI_HANDLE_GET_ENTRY(GdiHandleTable, ObjectHandle); Ret = Entry->KernelData != NULL && (Entry->Type & ~GDI_ENTRY_REUSE_MASK) != 0 && (HANDLE)((ULONG_PTR)Entry->ProcessId & ~0x1) == ProcessId; @@ -1150,7 +1141,7 @@ GDIOBJ_OwnedByCurrentProcess(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ ObjectHandle } BOOL INTERNAL_CALL -GDIOBJ_ConvertToStockObj(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ *phObj) +GDIOBJ_ConvertToStockObj(HGDIOBJ *phObj) { /* * FIXME !!!!! THIS FUNCTION NEEDS TO BE FIXED - IT IS NOT SAFE WHEN OTHER THREADS @@ -1158,7 +1149,7 @@ GDIOBJ_ConvertToStockObj(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ *phObj) */ PGDI_TABLE_ENTRY Entry; HANDLE ProcessId, LockedProcessId, PrevProcId; - PETHREAD Thread; + PW32THREAD Thread; HGDIOBJ hObj; #ifdef GDI_DEBUG ULONG Attempts = 0; @@ -1169,14 +1160,14 @@ GDIOBJ_ConvertToStockObj(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ *phObj) DPRINT("GDIOBJ_ConvertToStockObj: hObj: 0x%08x\n", hObj); - Thread = PsGetCurrentThread(); + Thread = PsGetCurrentThreadWin32Thread(); if(!GDI_HANDLE_IS_STOCKOBJ(hObj)) { ProcessId = PsGetCurrentProcessId(); LockedProcessId = (HANDLE)((ULONG_PTR)ProcessId | 0x1); - Entry = GDI_HANDLE_GET_ENTRY(HandleTable, hObj); + Entry = GDI_HANDLE_GET_ENTRY(GdiHandleTable, hObj); LockHandle: /* lock the object, we must not convert stock objects, so don't check!!! */ @@ -1203,17 +1194,17 @@ LockHandle: PrevType = _InterlockedCompareExchange(&Entry->Type, NewType, OldType); if(PrevType == OldType && Entry->KernelData != NULL) { - PETHREAD PrevThread; - PGDIOBJHDR GdiHdr; + PW32THREAD PrevThread; + POBJ Object; /* We successfully set the stock object flag. KernelData should never be NULL here!!! */ ASSERT(Entry->KernelData); - GdiHdr = GDIBdyToHdr(Entry->KernelData); + Object = Entry->KernelData; - PrevThread = GdiHdr->LockingThread; - if(GdiHdr->Locks == 0 || PrevThread == Thread) + PrevThread = Object->Tid; + if(Object->cExclusiveLock == 0 || PrevThread == Thread) { /* dereference the process' object counter */ if(PrevProcId != GDI_GLOBAL_PROCESS) @@ -1249,10 +1240,7 @@ LockHandle: #ifdef GDI_DEBUG if(++Attempts > 20) { - if(GdiHdr->lockfile != NULL) - { DPRINT1("[%d]Locked by 0x%x (we're 0x%x)\n", Attempts, PrevThread, Thread); - } } #endif /* WTF?! The object is already locked by a different thread! @@ -1294,39 +1282,39 @@ LockHandle: } void INTERNAL_CALL -GDIOBJ_SetOwnership(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ ObjectHandle, PEPROCESS NewOwner) +GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS NewOwner) { PGDI_TABLE_ENTRY Entry; HANDLE ProcessId, LockedProcessId, PrevProcId; - PETHREAD Thread; + PW32THREAD Thread; #ifdef GDI_DEBUG ULONG Attempts = 0; #endif DPRINT("GDIOBJ_SetOwnership: hObj: 0x%x, NewProcess: 0x%x\n", ObjectHandle, (NewOwner ? PsGetProcessId(NewOwner) : 0)); - Thread = PsGetCurrentThread(); + Thread = PsGetCurrentThreadWin32Thread(); if(!GDI_HANDLE_IS_STOCKOBJ(ObjectHandle)) { ProcessId = PsGetCurrentProcessId(); LockedProcessId = (HANDLE)((ULONG_PTR)ProcessId | 0x1); - Entry = GDI_HANDLE_GET_ENTRY(HandleTable, ObjectHandle); + Entry = GDI_HANDLE_GET_ENTRY(GdiHandleTable, ObjectHandle); LockHandle: /* lock the object, we must not convert stock objects, so don't check!!! */ PrevProcId = _InterlockedCompareExchangePointer((PVOID*)&Entry->ProcessId, ProcessId, LockedProcessId); if(PrevProcId == ProcessId) { - PETHREAD PrevThread; + PW32THREAD PrevThread; if((Entry->Type & ~GDI_ENTRY_REUSE_MASK) != 0 && Entry->KernelData != NULL) { - PGDIOBJHDR GdiHdr = GDIBdyToHdr(Entry->KernelData); + POBJ Object = Entry->KernelData; - PrevThread = GdiHdr->LockingThread; - if(GdiHdr->Locks == 0 || PrevThread == Thread) + PrevThread = Object->Tid; + if(Object->cExclusiveLock == 0 || PrevThread == Thread) { PEPROCESS OldProcess; PW32PROCESS W32Process; @@ -1427,10 +1415,10 @@ LockHandle: } void INTERNAL_CALL -GDIOBJ_CopyOwnership(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ CopyFrom, HGDIOBJ CopyTo) +GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo) { PGDI_TABLE_ENTRY FromEntry; - PETHREAD Thread; + PW32THREAD Thread; HANDLE FromProcessId, FromLockedProcessId, FromPrevProcId; #ifdef GDI_DEBUG ULONG Attempts = 0; @@ -1438,11 +1426,11 @@ GDIOBJ_CopyOwnership(PGDI_HANDLE_TABLE HandleTable, HGDIOBJ CopyFrom, HGDIOBJ Co DPRINT("GDIOBJ_CopyOwnership: from: 0x%x, to: 0x%x\n", CopyFrom, CopyTo); - Thread = PsGetCurrentThread(); + Thread = PsGetCurrentThreadWin32Thread(); if(!GDI_HANDLE_IS_STOCKOBJ(CopyFrom) && !GDI_HANDLE_IS_STOCKOBJ(CopyTo)) { - FromEntry = GDI_HANDLE_GET_ENTRY(HandleTable, CopyFrom); + FromEntry = GDI_HANDLE_GET_ENTRY(GdiHandleTable, CopyFrom); FromProcessId = (HANDLE)((ULONG_PTR)FromEntry->ProcessId & ~0x1); FromLockedProcessId = (HANDLE)((ULONG_PTR)FromProcessId | 0x1); @@ -1452,17 +1440,17 @@ LockHandleFrom: FromPrevProcId = _InterlockedCompareExchangePointer((PVOID*)&FromEntry->ProcessId, FromProcessId, FromLockedProcessId); if(FromPrevProcId == FromProcessId) { - PETHREAD PrevThread; - PGDIOBJHDR GdiHdr; + PW32THREAD PrevThread; + POBJ Object; if((FromEntry->Type & ~GDI_ENTRY_REUSE_MASK) != 0 && FromEntry->KernelData != NULL) { - GdiHdr = GDIBdyToHdr(FromEntry->KernelData); + Object = FromEntry->KernelData; /* save the pointer to the calling thread so we know it was this thread that locked the object */ - PrevThread = GdiHdr->LockingThread; - if(GdiHdr->Locks == 0 || PrevThread == Thread) + PrevThread = Object->Tid; + if(Object->cExclusiveLock == 0 || PrevThread == Thread) { /* now let's change the ownership of the target object */ @@ -1472,14 +1460,14 @@ LockHandleFrom: /* FIXME */ if(NT_SUCCESS(PsLookupProcessByProcessId((HANDLE)((ULONG_PTR)FromPrevProcId & ~0x1), &ProcessTo))) { - GDIOBJ_SetOwnership(HandleTable, CopyTo, ProcessTo); + GDIOBJ_SetOwnership(CopyTo, ProcessTo); ObDereferenceObject(ProcessTo); } } else { /* mark the object as global */ - GDIOBJ_SetOwnership(HandleTable, CopyTo, NULL); + GDIOBJ_SetOwnership(CopyTo, NULL); } (void)_InterlockedExchangePointer((PVOID*)&FromEntry->ProcessId, FromPrevProcId); @@ -1580,7 +1568,7 @@ NtGdiCreateClientObj( // INT Index; PGDI_TABLE_ENTRY Entry; - HANDLE handle = GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TYPE_CLIOBJ); + HANDLE handle = GDIOBJ_AllocObj(GDI_OBJECT_TYPE_CLIOBJ); // Need to change handle type based on ulType. Index = GDI_HANDLE_GET_INDEX((HGDIOBJ)handle); Entry = &GdiHandleTable->Entries[Index]; @@ -1600,7 +1588,7 @@ NtGdiDeleteClientObj( IN HANDLE h ) { - return GDIOBJ_FreeObj(GdiHandleTable, h, GDI_OBJECT_TYPE_CLIOBJ); + return GDIOBJ_FreeObj(h, GDI_OBJECT_TYPE_CLIOBJ); } /* EOF */ diff --git a/reactos/subsystems/win32/win32k/objects/palobj.c b/reactos/subsystems/win32/win32k/objects/palobj.c index b353a20cd1f..669b03e75f5 100644 --- a/reactos/subsystems/win32/win32k/objects/palobj.c +++ b/reactos/subsystems/win32/win32k/objects/palobj.c @@ -63,7 +63,7 @@ PALETTE_AllocPalette(ULONG Mode, HPALETTE NewPalette; PPALGDI PalGDI; - NewPalette = (HPALETTE) GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TYPE_PALETTE); + NewPalette = (HPALETTE) GDIOBJ_AllocObj(GDI_OBJECT_TYPE_PALETTE); if (NULL == NewPalette) { return NULL; @@ -112,7 +112,7 @@ PALETTE_AllocPaletteIndexedRGB(ULONG NumColors, PPALGDI PalGDI; unsigned i; - NewPalette = (HPALETTE) GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TYPE_PALETTE); + NewPalette = (HPALETTE) GDIOBJ_AllocObj(GDI_OBJECT_TYPE_PALETTE); if (NULL == NewPalette) { return NULL; diff --git a/reactos/subsystems/win32/win32k/objects/region.c b/reactos/subsystems/win32/win32k/objects/region.c index 29c64c89280..7034a74d0a2 100644 --- a/reactos/subsystems/win32/win32k/objects/region.c +++ b/reactos/subsystems/win32/win32k/objects/region.c @@ -2088,7 +2088,7 @@ RGNDATA_AllocRgn(INT n) HRGN hReg; PROSRGNDATA pReg; - if ((hReg = (HRGN) GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TYPE_REGION))) + if ((hReg = (HRGN) GDIOBJ_AllocObj(GDI_OBJECT_TYPE_REGION))) { if (NULL != (pReg = RGNDATA_LockRgn(hReg))) { diff --git a/reactos/subsystems/win32/win32k/objects/stockobj.c b/reactos/subsystems/win32/win32k/objects/stockobj.c index 7b49e351694..260a229ea03 100644 --- a/reactos/subsystems/win32/win32k/objects/stockobj.c +++ b/reactos/subsystems/win32/win32k/objects/stockobj.c @@ -149,7 +149,7 @@ CreateStockObjects(void) { if (NULL != StockObjects[Object]) { - GDIOBJ_ConvertToStockObj(GdiHandleTable, &StockObjects[Object]); + GDIOBJ_ConvertToStockObj(&StockObjects[Object]); } } @@ -284,7 +284,7 @@ CreateSysColorObjects(VOID) SysColorBrushes[i] = IntGdiCreateSolidBrush(SysColors[i]); if(SysColorBrushes[i] != NULL) { - GDIOBJ_ConvertToStockObj(GdiHandleTable, (HGDIOBJ*)&SysColorBrushes[i]); + GDIOBJ_ConvertToStockObj((HGDIOBJ*)&SysColorBrushes[i]); } } } @@ -301,7 +301,7 @@ CreateSysColorObjects(VOID) SysColorPens[i] = IntGdiExtCreatePen(Pen.lopnStyle, Pen.lopnWidth.x, BS_SOLID, Pen.lopnColor, 0, 0, 0, NULL, 0, TRUE, NULL); if(SysColorPens[i] != NULL) { - GDIOBJ_ConvertToStockObj(GdiHandleTable, (HGDIOBJ*)&SysColorPens[i]); + GDIOBJ_ConvertToStockObj((HGDIOBJ*)&SysColorPens[i]); } } }