Author: tkreuzer Date: Thu Sep 6 05:04:18 2007 New Revision: 28891
URL: http://svn.reactos.org/svn/reactos?rev=28891&view=rev Log: - cleanup EXTPENS and PENS in BRUSH_Cleanup, remove EXTPEN_Cleanup - add new new ObjectTypeInfo structure. It's unused atm, but it will be soon.
Modified: trunk/reactos/subsystems/win32/win32k/include/pen.h trunk/reactos/subsystems/win32/win32k/objects/brush.c trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c trunk/reactos/subsystems/win32/win32k/objects/pen.c
Modified: trunk/reactos/subsystems/win32/win32k/include/pen.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/inc... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/pen.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/pen.h Thu Sep 6 05:04:18 2007 @@ -15,6 +15,5 @@ #define PENOBJ_UnlockPen(pPenObj) GDIOBJ_UnlockObjByPtr(GdiHandleTable, pPenObj)
INT STDCALL PEN_GetObject(PGDIBRUSHOBJ hPen, INT Count, PLOGPEN Buffer); -BOOL INTERNAL_CALL EXTPEN_Cleanup(PVOID ObjectBody);
#endif
Modified: trunk/reactos/subsystems/win32/win32k/objects/brush.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/obj... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/brush.c (original) +++ trunk/reactos/subsystems/win32/win32k/objects/brush.c Thu Sep 6 05:04:18 2007 @@ -44,6 +44,12 @@ ASSERT(pBrush->hbmPattern); GDIOBJ_SetOwnership(GdiHandleTable, pBrush->hbmPattern, PsGetCurrentProcess()); NtGdiDeleteObject(pBrush->hbmPattern); + } + + /* Free the kmode styles array of EXTPENS */ + if (pBrush->pStyle) + { + ExFreePool(pBrush->pStyle); }
return TRUE;
Modified: trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/obj... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c (original) +++ trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c Thu Sep 6 05:04:18 2007 @@ -75,11 +75,11 @@ {GDI_OBJECT_TYPE_DC, sizeof(DC), DC_Cleanup}, {GDI_OBJECT_TYPE_PALETTE, sizeof(PALGDI), PALETTE_Cleanup}, {GDI_OBJECT_TYPE_BRUSH, sizeof(GDIBRUSHOBJ), BRUSH_Cleanup}, - {GDI_OBJECT_TYPE_PEN, sizeof(GDIBRUSHOBJ), GDI_CleanupDummy}, + {GDI_OBJECT_TYPE_PEN, sizeof(GDIBRUSHOBJ), BRUSH_Cleanup}, {GDI_OBJECT_TYPE_FONT, sizeof(TEXTOBJ), GDI_CleanupDummy}, {GDI_OBJECT_TYPE_DIRECTDRAW, sizeof(DD_DIRECTDRAW), DD_Cleanup}, {GDI_OBJECT_TYPE_DD_SURFACE, sizeof(DD_SURFACE), DDSURF_Cleanup}, - {GDI_OBJECT_TYPE_EXTPEN, sizeof(GDIBRUSHOBJ), EXTPEN_Cleanup}, + {GDI_OBJECT_TYPE_EXTPEN, sizeof(GDIBRUSHOBJ), BRUSH_Cleanup}, /* FIXME do not use normal DC struct for this */ {GDI_OBJECT_TYPE_METADC, sizeof(DC), GDI_CleanupDummy}, {GDI_OBJECT_TYPE_METAFILE, sizeof(DC), GDI_CleanupDummy}, @@ -88,6 +88,51 @@ };
#define OBJTYPE_COUNT (sizeof(ObjInfo) / sizeof(ObjInfo[0])) + +typedef struct +{ + BOOL bUseLookaside; + ULONG_PTR ulBodySize; + ULONG Tag; + GDICLEANUPPROC CleanupProc; +} OBJ_TYPE_INFO, *POBJ_TYPE_INFO; + +static const +OBJ_TYPE_INFO ObjTypeInfo[] = +{ + {0, 0, 0, NULL}, /* 00 reserved entry */ + {1, sizeof(DC), GDI_OBJECT_TAG_DC, DC_Cleanup}, /* 01 DC */ + {1, sizeof(DD_DIRECTDRAW), GDI_OBJECT_TAG_DDRAW, DD_Cleanup}, /* 02 DD_DDRAW, should be moved away from gdi objects */ + {1, sizeof(DD_SURFACE), GDI_OBJECT_TAG_DDSURF, DDSURF_Cleanup}, /* 03 DD_SURFACE, should be moved away from gdi objects */ + {1, sizeof(ROSRGNDATA), GDI_OBJECT_TAG_REGION, RGNDATA_Cleanup}, /* 04 REGION */ + {1, sizeof(BITMAPOBJ), GDI_OBJECT_TAG_BITMAP, BITMAP_Cleanup}, /* 05 BITMAP */ + {0, sizeof(DC), GDI_OBJECT_TAG_CLIOBJ, GDI_CleanupDummy}, /* 06 CLIOBJ: METADC,... FIXME: don't use DC struct */ + {0, 0, GDI_OBJECT_TAG_PATH, NULL}, /* 07 PATH, unused */ + {1, sizeof(PALGDI), GDI_OBJECT_TAG_PALETTE, PALETTE_Cleanup}, /* 08 PALETTE */ + {0, 0, GDI_OBJECT_TAG_COLSPC, NULL}, /* 09 COLORSPACE, unused */ + {1, sizeof(TEXTOBJ), GDI_OBJECT_TAG_FONT, GDI_CleanupDummy}, /* 0a FONT */ + {0, 0, 0, NULL}, /* 0b RFONT, unused */ + {0, 0, 0, NULL}, /* 0c PFE, unused */ + {0, 0, 0, NULL}, /* 0d PFT, unused */ + {0, 0, 0, NULL}, /* 0e ICMCXF, unused */ + {0, 0, 0, NULL}, /* 0f ICMDLL, unused */ + {1, sizeof(GDIBRUSHOBJ), GDI_OBJECT_TAG_BRUSH, BRUSH_Cleanup}, /* 10 BRUSH, PEN, EXTPEN */ + {0, 0, 0, NULL}, /* 11 D3D_HANDLE, unused */ + {0, 0, 0, NULL}, /* 12 DD_VPORT, unused */ + {0, 0, 0, NULL}, /* 13 SPACE, unused */ + {0, 0, 0, NULL}, /* 14 DD_MOTION, unused */ + {0, 0, 0, NULL}, /* 15 META, unused */ + {0, 0, 0, NULL}, /* 16 ENUMFONT, unused */ + {0, 0, 0, NULL}, /* 18 VTFD, unused */ + {0, 0, 0, NULL}, /* 19 TTFD, unused */ + {0, 0, 0, NULL}, /* 1a RC, unused */ + {0, 0, 0, NULL}, /* 1b TEMP, unused */ + {0, 0, 0, NULL}, /* 1c DRVOBJ, unused */ + {0, 0, 0, NULL}, /* 1d DCIOBJ, unused */ + {0, 0, 0, NULL}, /* 1e SPOOL, unused */ +}; + +#define BASE_OBJTYPE_COUNT (sizeof(ObjTypeInfo) / sizeof(ObjTypeInfo[0]))
static LARGE_INTEGER ShortDelay;
Modified: trunk/reactos/subsystems/win32/win32k/objects/pen.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/obj... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/pen.c (original) +++ trunk/reactos/subsystems/win32/win32k/objects/pen.c Thu Sep 6 05:04:18 2007 @@ -201,19 +201,6 @@ return cbRetCount; }
-BOOL INTERNAL_CALL -EXTPEN_Cleanup(PVOID ObjectBody) -{ - PGDIBRUSHOBJ pPenObject = (PGDIBRUSHOBJ)ObjectBody; - - /* Free the kmode Styles array */ - if (pPenObject->pStyle) - { - ExFreePool(pPenObject->pStyle); - } - return TRUE; -} - /* PUBLIC FUNCTIONS ***********************************************************/
HPEN STDCALL