Check for busy DCE moved to DCHook16().
diff --git a/objects/dc.c b/objects/dc.c
index 7c746ed..4899717 100644
--- a/objects/dc.c
+++ b/objects/dc.c
@@ -657,24 +657,19 @@
*/
BOOL WINAPI DeleteDC( HDC hdc )
{
- DC * dc;
-
- /*
- * Windows will not let you delete a DC that is busy
- * (between GetDC and ReleaseDC)
- */
- if (DCE_IsDCBusy(hdc))
- {
- WARN(dc, " Application trying to delete a busy DC\n");
- return TRUE;
- }
-
- dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
-
+ DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return FALSE;
TRACE(dc, "%04x\n", hdc );
+ /* Call hook procedure to check whether is it OK to delete this DC */
+ if ( dc->hookProc && !(dc->w.flags & (DC_SAVED | DC_MEMORY))
+ && dc->hookProc( hdc, DCHC_DELETEDC, dc->dwHookData, 0 ) == FALSE )
+ {
+ GDI_HEAP_UNLOCK( hdc );
+ return FALSE;
+ }
+
while (dc->saveLevel)
{
DC * dcs;