HRGN hClipRgn; /* Clip region (may be 0) */
HRGN hGCClipRgn; /* GC clip region (ClipRgn AND VisRgn) */
- BYTE bitsPerPixel;
-
CLIPOBJ *CombinedClip;
UNICODE_STRING DriverName;
/* Internal functions *********************************************************/
-#if 0
+#if 1
#define DC_LockDc(hDC) \
((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC))
#define DC_UnlockDc(pDC) \
GDIOBJ_UnlockObjByPtr ((POBJ)pDC)
-#endif
+#else
VOID NTAPI EngAcquireSemaphoreShared(IN HSEMAPHORE hsem);
/* Acquire shared PDEV lock */
EngAcquireSemaphoreShared(pdc->ppdev->hsemDevLock);
- /* Assign Surface */
- pdc->dclevel.pSurface = PDEVOBJ_pSurface(pdc->ppdev);
-
+ /* Update Surface if needed */
+ 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;
}
{
if(pdc->dctype == DCTYPE_DIRECT)
{
- /* Release surface lock */
- SURFACE_ShareUnlockSurface(pdc->dclevel.pSurface);
/* Release PDEV lock */
EngReleaseSemaphore(pdc->ppdev->hsemDevLock);
}
GDIOBJ_UnlockObjByPtr(&pdc->BaseObject);
}
+#endif
extern PDC defaultDCstate;
VOID FASTCALL DC_vUpdateLineBrush(PDC pdc);
VOID FASTCALL DC_vUpdateTextBrush(PDC pdc);
VOID FASTCALL DC_vUpdateBackgroundBrush(PDC pdc);
+VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2);
+VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdc1, RECT rc1, PDC pdc2, RECT rc2);
VOID NTAPI DC_vRestoreDC(IN PDC pdc, INT iSaveLevel);
pdc->dclevel.ppal = ppal;
}
+extern PBRUSH pbrDefaultBrush ;
+
#endif /* not __WIN32K_DC_H */