Lock PDC with pDevObj semaphore too.

svn path=/branches/reactos-yarotows/; revision=46470
This commit is contained in:
Jérôme Gardou 2010-03-26 16:17:12 +00:00
parent 33f63724b1
commit 76085ba982
2 changed files with 7 additions and 4 deletions

View file

@ -167,8 +167,8 @@ FORCEINLINE
DC_LockDc(HDC hdc) DC_LockDc(HDC hdc)
{ {
PDC pdc; PDC pdc;
pdc = GDIOBJ_LockObj(hdc, GDI_OBJECT_TYPE_DC); pdc = GDIOBJ_LockObj(hdc, GDILoObjType_LO_DC_TYPE);
// EngAcquireSemaphoreShared(pdc->ppdev->hsemDevLock); if(pdc) EngAcquireSemaphoreShared(pdc->ppdev->hsemDevLock);
return pdc; return pdc;
} }
@ -176,7 +176,7 @@ void
FORCEINLINE FORCEINLINE
DC_UnlockDc(PDC pdc) DC_UnlockDc(PDC pdc)
{ {
// EngReleaseSemaphore(pdc->ppdev->hsemDevLock); EngReleaseSemaphore(pdc->ppdev->hsemDevLock);
GDIOBJ_UnlockObjByPtr(&pdc->BaseObject); GDIOBJ_UnlockObjByPtr(&pdc->BaseObject);
} }

View file

@ -117,6 +117,8 @@ DC_vInitDc(
DCTYPE dctype, DCTYPE dctype,
PPDEVOBJ ppdev) PPDEVOBJ ppdev)
{ {
/* Lock ppdev */
EngAcquireSemaphoreShared(ppdev->hsemDevLock);
/* Setup some basic fields */ /* Setup some basic fields */
pdc->dctype = dctype; pdc->dctype = dctype;
@ -477,6 +479,7 @@ GreOpenDCW(
} }
hdc = pdc->BaseObject.hHmgr; hdc = pdc->BaseObject.hHmgr;
/* Lock ppdev and initialize the new DC */
DC_vInitDc(pdc, iType, ppdev); DC_vInitDc(pdc, iType, ppdev);
/* FIXME: HACK! */ /* FIXME: HACK! */
DC_InitHack(pdc); DC_InitHack(pdc);
@ -638,7 +641,7 @@ NtGdiCreateCompatibleDC(HDC hdc)
} }
hdcNew = pdcNew->BaseObject.hHmgr; hdcNew = pdcNew->BaseObject.hHmgr;
/* Initialize the new DC */ /* Lock ppdev and initialize the new DC */
DC_vInitDc(pdcNew, DCTYPE_MEMORY, ppdev); DC_vInitDc(pdcNew, DCTYPE_MEMORY, ppdev);
/* FIXME: HACK! */ /* FIXME: HACK! */
DC_InitHack(pdcNew); DC_InitHack(pdcNew);