Added dwFlags to lock_update private functions so we can pass WRITEONLY/READONLY. Added those flags to the internal Lock() calls. Only copy the surface from screen to surface if not writeonly. Restrict blitting between display window and surface to the locked/unlocked rectangle and the clipwindow section. Added defines for DDHAL_UNLOCKDATA/DDHAL_LOCKDATA, added calls to HAL implementation.
diff --git a/include/ddrawi.h b/include/ddrawi.h index 76fea03..edea856 100644 --- a/include/ddrawi.h +++ b/include/ddrawi.h
@@ -538,6 +538,24 @@ LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft; } DDHAL_FLIPDATA; +typedef struct _DDHAL_LOCKDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + DWORD bHasRect; + RECTL rArea; + LPVOID lpSurfData; + HRESULT ddRVal; + LPDDHALSURFCB_LOCK Lock; + DWORD dwFlags; +} DDHAL_LOCKDATA; + +typedef struct _DDHAL_UNLOCKDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + HRESULT ddRVal; + LPDDHALSURFCB_UNLOCK Unlock; +} DDHAL_UNLOCKDATA; + typedef struct _DDHAL_BLTDATA { LPDDRAWI_DIRECTDRAW_GBL lpDD; LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;