Author: jgardou Date: Fri Mar 26 17:17:12 2010 New Revision: 46470
URL: http://svn.reactos.org/svn/reactos?rev=46470&view=rev Log: [WIN32K] Lock PDC with pDevObj semaphore too.
Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/dc.h branches/reactos-yarotows/subsystems/win32/win32k/objects/dclife.c
Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/dc.h URL: http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win3... ============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/include/dc.h [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/include/dc.h [iso-8859-1] Fri Mar 26 17:17:12 2010 @@ -167,8 +167,8 @@ DC_LockDc(HDC hdc) { PDC pdc; - pdc = GDIOBJ_LockObj(hdc, GDI_OBJECT_TYPE_DC); -// EngAcquireSemaphoreShared(pdc->ppdev->hsemDevLock); + pdc = GDIOBJ_LockObj(hdc, GDILoObjType_LO_DC_TYPE); + if(pdc) EngAcquireSemaphoreShared(pdc->ppdev->hsemDevLock); return pdc; }
@@ -176,7 +176,7 @@ FORCEINLINE DC_UnlockDc(PDC pdc) { -// EngReleaseSemaphore(pdc->ppdev->hsemDevLock); + EngReleaseSemaphore(pdc->ppdev->hsemDevLock); GDIOBJ_UnlockObjByPtr(&pdc->BaseObject); }
Modified: branches/reactos-yarotows/subsystems/win32/win32k/objects/dclife.c URL: http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win3... ============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] Fri Mar 26 17:17:12 2010 @@ -117,6 +117,8 @@ DCTYPE dctype, PPDEVOBJ ppdev) { + /* Lock ppdev */ + EngAcquireSemaphoreShared(ppdev->hsemDevLock);
/* Setup some basic fields */ pdc->dctype = dctype; @@ -477,6 +479,7 @@ } hdc = pdc->BaseObject.hHmgr;
+ /* Lock ppdev and initialize the new DC */ DC_vInitDc(pdc, iType, ppdev); /* FIXME: HACK! */ DC_InitHack(pdc); @@ -638,7 +641,7 @@ } hdcNew = pdcNew->BaseObject.hHmgr;
- /* Initialize the new DC */ + /* Lock ppdev and initialize the new DC */ DC_vInitDc(pdcNew, DCTYPE_MEMORY, ppdev); /* FIXME: HACK! */ DC_InitHack(pdcNew);