mirror of
https://github.com/reactos/reactos.git
synced 2025-07-24 13:13:40 +00:00
- cleanup EXTPENS and PENS in BRUSH_Cleanup, remove EXTPEN_Cleanup
- add new new ObjectTypeInfo structure. It's unused atm, but it will be soon. svn path=/trunk/; revision=28891
This commit is contained in:
parent
35bf0957bc
commit
2aaf1f0e51
4 changed files with 53 additions and 16 deletions
|
@ -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
|
||||
|
|
|
@ -46,6 +46,12 @@ BRUSH_Cleanup(PVOID ObjectBody)
|
|||
NtGdiDeleteObject(pBrush->hbmPattern);
|
||||
}
|
||||
|
||||
/* Free the kmode styles array of EXTPENS */
|
||||
if (pBrush->pStyle)
|
||||
{
|
||||
ExFreePool(pBrush->pStyle);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -75,11 +75,11 @@ GDI_OBJ_INFO ObjInfo[] =
|
|||
{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},
|
||||
|
@ -89,6 +89,51 @@ GDI_OBJ_INFO ObjInfo[] =
|
|||
|
||||
#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;
|
||||
|
||||
#define DelayExecution() \
|
||||
|
|
|
@ -201,19 +201,6 @@ PEN_GetObject(PGDIBRUSHOBJ pPenObject, INT cbCount, PLOGPEN pBuffer)
|
|||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue