From f9df01f16be898af3565cbc673e035b779ff2f7f Mon Sep 17 00:00:00 2001 From: James Tabor Date: Mon, 5 May 2008 01:34:17 +0000 Subject: [PATCH] Implement IntGdiReferencePdev and part of IntGdiUnreferencePdev. svn path=/trunk/; revision=33288 --- reactos/subsystems/win32/win32k/objects/dc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/reactos/subsystems/win32/win32k/objects/dc.c b/reactos/subsystems/win32/win32k/objects/dc.c index d99b9080656..b0bec444313 100644 --- a/reactos/subsystems/win32/win32k/objects/dc.c +++ b/reactos/subsystems/win32/win32k/objects/dc.c @@ -2699,16 +2699,27 @@ IntEnumHDev(VOID) return &PrimarySurface; } +HSEMAPHORE hsemDriverMgmt = NULL; // Hax, should be in dllmain.c and global. + VOID FASTCALL IntGdiReferencePdev(PGDIDEVICE pPDev) { + if(!hsemDriverMgmt) hsemDriverMgmt = EngCreateSemaphore(); // Hax, should be in dllmain.c + EngAcquireSemaphore(hsemDriverMgmt); pPDev->cPdevRefs++; + EngReleaseSemaphore(hsemDriverMgmt); } VOID FASTCALL IntGdiUnreferencePdev(PGDIDEVICE pPDev, DWORD CleanUpType) { + EngAcquireSemaphore(hsemDriverMgmt); pPDev->cPdevRefs--; + if (!pPDev->cPdevRefs) + { + // Handle the destruction of pPDev or GDIDEVICE or PDEVOBJ or PDEV etc. + } + EngReleaseSemaphore(hsemDriverMgmt); }