[WIN32K]
[reactos.git] / subsystems / win32 / win32k / include / dc.h
index 36ffef2..d78e200 100644 (file)
@@ -54,8 +54,6 @@ typedef struct _ROS_DC_INFO
   HRGN     hClipRgn;     /* Clip region (may be 0) */
   HRGN     hGCClipRgn;   /* GC clip region (ClipRgn AND VisRgn) */
 
-  BYTE   bitsPerPixel;
-
   CLIPOBJ     *CombinedClip;
 
   UNICODE_STRING    DriverName;
@@ -154,12 +152,12 @@ typedef struct _DC
 
 /* 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);
 
@@ -176,9 +174,12 @@ DC_LockDc(HDC hdc)
         /* 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;
 }
@@ -189,14 +190,13 @@ DC_UnlockDc(PDC 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;
@@ -221,6 +221,8 @@ VOID FASTCALL DC_vUpdateFillBrush(PDC pdc);
 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);
 
@@ -295,4 +297,6 @@ DC_vSelectPalette(PDC pdc, PPALETTE ppal)
     pdc->dclevel.ppal = ppal;
 }
 
+extern PBRUSH pbrDefaultBrush ;
+
 #endif /* not __WIN32K_DC_H */