//#define HOOK_FILLPATH 0x00000040
//#define HOOK_STROKEANDFILLPATH 0x00000080
//#define HOOK_LINETO 0x00000100
-//#define SHAREACCESS_SURFACE 0x00000200
+ SHAREACCESS_SURFACE = 0x00000200,
//#define HOOK_COPYBITS 0x00000400
//#define REDIRECTION_SURFACE 0x00000800 // ?
//#define HOOK_MOVEPANNING 0x00000800
};
#define BMF_POOLALLOC 0x100
-#define PDEV_SURFACE 0x80000000
/* Internal interface */
#define SURFACE_AllocSurfaceWithHandle() ((PSURFACE) GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_BITMAP, sizeof(SURFACE)))
-#define SURFACE_FreeSurface(pBMObj) GDIOBJ_FreeObj((POBJ) pBMObj, GDIObjType_SURF_TYPE)
-#define SURFACE_FreeSurfaceByHandle(hBMObj) GDIOBJ_FreeObjByHandle((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP)
/* NOTE: Use shared locks! */
#define SURFACE_ShareLockSurface(hBMObj) \
((PSURFACE) GDIOBJ_ShareLockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP))
+FORCEINLINE
+VOID
+SURFACE_ShareLockByPointer(PSURFACE psurf)
+{
+ GDIOBJ_vReferenceObjectByPointer(&psurf->BaseObject);
+}
+
#define SURFACE_UnlockSurface(pBMObj) \
GDIOBJ_vUnlockObject ((POBJ)pBMObj)
#define SURFACE_ShareUnlockSurface(pBMObj) \
FASTCALL
BitmapFormat(ULONG cBits, ULONG iCompression);
-BOOL
+VOID
NTAPI
-SURFACE_Cleanup(PVOID ObjectBody);
+SURFACE_vCleanup(PVOID ObjectBody);
PSURFACE
NTAPI
_In_ ULONG iFormat,
_In_ ULONG fjBitmap,
_In_opt_ ULONG cjWidth,
+ _In_opt_ ULONG cjBits,
_In_opt_ PVOID pvBits);
-VOID
FORCEINLINE
+VOID
SURFACE_vSetPalette(
_Inout_ PSURFACE psurf,
_In_ PPALETTE ppal)