diff --git a/reactos/subsys/win32k/include/dce.h b/reactos/subsys/win32k/include/dce.h index 54c76b3ec6e..9c203183bb8 100644 --- a/reactos/subsys/win32k/include/dce.h +++ b/reactos/subsys/win32k/include/dce.h @@ -44,5 +44,6 @@ PDCE DCE_FreeDCE(PDCE dce); VOID DCE_FreeWindowDCE(HWND); INT DCE_ExcludeRgn(HDC, HWND, HRGN); BOOL DCE_InvalidateDCE(HWND, const PRECTL); +BOOL DCE_InternalDelete(PDCE dce); #endif diff --git a/reactos/subsys/win32k/ntuser/windc.c b/reactos/subsys/win32k/ntuser/windc.c index ab5930be835..e11fb5ad7d0 100644 --- a/reactos/subsys/win32k/ntuser/windc.c +++ b/reactos/subsys/win32k/ntuser/windc.c @@ -1,4 +1,4 @@ -/* $Id: windc.c,v 1.6 2002/09/01 20:39:56 dwelch Exp $ +/* $Id: windc.c,v 1.7 2003/03/08 00:46:14 gvg Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -528,4 +528,31 @@ NtUserGetDCEx(HWND hWnd, HANDLE hRegion, ULONG Flags) return(Dce->hDC); } +BOOL +DCE_InternalDelete(PDCE Dce) +{ + PDCE PrevInList; + + if (Dce == FirstDce) + { + FirstDce = Dce->next; + PrevInList = Dce; + } + else + { + for (PrevInList = FirstDce; NULL != PrevInList; PrevInList = PrevInList->next) + { + if (Dce == PrevInList->next) + { + PrevInList->next = Dce->next; + break; + } + } + assert(NULL != PrevInList); + } + + return NULL != PrevInList; +} + + /* EOF */ diff --git a/reactos/subsys/win32k/objects/gdiobj.c b/reactos/subsys/win32k/objects/gdiobj.c index d7cce2b4d33..fb8de1542e5 100644 --- a/reactos/subsys/win32k/objects/gdiobj.c +++ b/reactos/subsys/win32k/objects/gdiobj.c @@ -1,13 +1,14 @@ /* * GDIOBJ.C - GDI object manipulation routines * - * $Id: gdiobj.c,v 1.20 2003/01/18 20:50:43 ei Exp $ + * $Id: gdiobj.c,v 1.21 2003/03/08 00:46:14 gvg Exp $ * */ #undef WIN32_LEAN_AND_MEAN #include #include +#include #include #include #include @@ -277,6 +278,9 @@ BOOL GDIOBJ_FreeObj(HGDIOBJ hObj, WORD Magic, DWORD Flag) case GO_BRUSH_MAGIC: case GO_FONT_MAGIC: break; + case GO_DCE_MAGIC: + bRet = DCE_InternalDelete( (PDCE) Obj ); + break; } handleEntry->hProcessId = 0; ExFreePool (handleEntry->pObject);