In W32kDeleteDC call UnreferenceDriver only for non memory DC.

This will fix the second gditest bug.

svn path=/trunk/; revision=2626
This commit is contained in:
Hartmut Birr 2002-02-15 20:14:43 +00:00
parent 9ca5a97711
commit 409ce02fa7

View file

@ -1,4 +1,4 @@
/* $Id: dc.c,v 1.29 2001/11/19 12:06:23 jfilby Exp $ /* $Id: dc.c,v 1.30 2002/02/15 20:14:43 hbirr Exp $
* *
* DC.C - Device context functions * DC.C - Device context functions
* *
@ -320,15 +320,17 @@ BOOL STDCALL W32kDeleteDC(HDC DCHandle)
return FALSE; return FALSE;
} }
DPRINT( "Deleting DC\n" ); DPRINT( "Deleting DC\n" );
if ((!DRIVER_UnreferenceDriver (DCToDelete->DriverName)) && if ((!(DCToDelete->w.flags & DC_MEMORY))) // Don't reset the display if its a memory DC
(!(DCToDelete->w.flags & DC_MEMORY))) // Don't reset the display if its a memory DC
{ {
DPRINT( "No more references to driver, reseting display\n" ); if (!DRIVER_UnreferenceDriver (DCToDelete->DriverName))
DCToDelete->DriverFunctions.DisableSurface(DCToDelete->PDev); {
CHECKPOINT; DPRINT( "No more references to driver, reseting display\n" );
DCToDelete->DriverFunctions.AssertMode( DCToDelete->PDev, FALSE ); DCToDelete->DriverFunctions.DisableSurface(DCToDelete->PDev);
CHECKPOINT; CHECKPOINT;
DCToDelete->DriverFunctions.DisablePDev(DCToDelete->PDev); DCToDelete->DriverFunctions.AssertMode( DCToDelete->PDev, FALSE );
CHECKPOINT;
DCToDelete->DriverFunctions.DisablePDev(DCToDelete->PDev);
}
} }
CHECKPOINT; CHECKPOINT;
/* First delete all saved DCs */ /* First delete all saved DCs */
@ -376,7 +378,7 @@ BOOL STDCALL W32kDeleteDC(HDC DCHandle)
#if 0 /* FIXME */ #if 0 /* FIXME */
PATH_DestroyGdiPath (&DCToDelete->w.path); PATH_DestroyGdiPath (&DCToDelete->w.path);
#endif #endif
DC_FreeDC (DCToDelete); DC_FreeDC (DCToDelete);
return TRUE; return TRUE;