Unlock/lock surface when locking DC

svn path=/branches/reactos-yarotows/; revision=46697
This commit is contained in:
Jérôme Gardou 2010-04-03 16:32:30 +00:00
parent a9afa4fad8
commit 736c7b0111

View file

@ -169,15 +169,19 @@ DC_LockDc(HDC hdc)
{ {
PDC pdc; PDC pdc;
pdc = GDIOBJ_LockObj(hdc, GDILoObjType_LO_DC_TYPE); pdc = GDIOBJ_LockObj(hdc, GDILoObjType_LO_DC_TYPE);
/* Direct DC's need PDEV locking */ /* Direct DC's need PDEV locking */
if(pdc && pdc->dctype == DCTYPE_DIRECT) if(pdc && pdc->dctype == DCTYPE_DIRECT)
{ {
/* Acquire shared PDEV lock */ /* Acquire shared PDEV lock */
EngAcquireSemaphoreShared(pdc->ppdev->hsemDevLock); EngAcquireSemaphoreShared(pdc->ppdev->hsemDevLock);
/* Get the current surface */ /* Update Surface if needed */
pdc->dclevel.pSurface = pdc->ppdev->pSurface; if(pdc->dclevel.pSurface != pdc->ppdev->pSurface)
{
if(pdc->dclevel.pSurface) SURFACE_ShareUnlockSurface(pdc->dclevel.pSurface);
pdc->dclevel.pSurface = PDEVOBJ_pSurface(pdc->ppdev);
}
} }
return pdc; return pdc;
} }