mirror of
https://github.com/reactos/reactos.git
synced 2024-08-02 17:40:58 +00:00
parly implement surface_Lock it does not work yet but here is the code almost complete for HAL
svn path=/trunk/; revision=21520
This commit is contained in:
parent
7fde42e8fd
commit
47409766bf
|
@ -315,7 +315,37 @@ HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rDest,
|
|||
HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2
|
||||
pDDSD, DWORD flags, HANDLE event)
|
||||
{
|
||||
DX_STUB;
|
||||
|
||||
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||
|
||||
|
||||
DDHAL_LOCKDATA Lock;
|
||||
|
||||
if (prect!=NULL)
|
||||
{
|
||||
Lock.bHasRect = TRUE;
|
||||
memcpy(&Lock.rArea,prect,sizeof(RECTL));
|
||||
}
|
||||
else
|
||||
{
|
||||
Lock.bHasRect = FALSE;
|
||||
}
|
||||
|
||||
Lock.ddRVal = DDERR_NOTPALETTIZED;
|
||||
Lock.Lock = This->owner->mCallbacks.HALDDSurface.Lock;
|
||||
Lock.dwFlags = flags;
|
||||
Lock.lpDDSurface = This->Surf->mpPrimaryLocals[0];
|
||||
Lock.lpDD = &This->owner->mDDrawGlobal;
|
||||
// FIXME lpSurfData
|
||||
//Lock.lpSurfData =
|
||||
|
||||
if (This->owner->mCallbacks.HALDDSurface.Lock(&Lock)!= DDHAL_DRIVER_NOTHANDLED)
|
||||
{
|
||||
return Lock.ddRVal;
|
||||
}
|
||||
// FIXME LPDDSURFACEDESC2
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
HRESULT Hal_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect)
|
||||
{
|
||||
|
|
|
@ -82,6 +82,11 @@ HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
|
|||
|
||||
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||
|
||||
if (event != NULL)
|
||||
{
|
||||
return DDERR_INVALIDPARAMS;
|
||||
}
|
||||
|
||||
if (This->owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_LOCK)
|
||||
{
|
||||
return Hal_DDrawSurface_Lock( iface, prect, pDDSD, flags, event);
|
||||
|
|
|
@ -10,6 +10,22 @@
|
|||
#include <d3dhal.h>
|
||||
#include <ddrawgdi.h>
|
||||
|
||||
|
||||
/* this sturct are not longer in DDK
|
||||
I did recrate it by looking diffent betwin DD_xx struct and _DDHAL strucrt
|
||||
only diffent I found was the global pointer have been change from LPDDRAWI_DDRAWSURFACE_GBL
|
||||
to DD_DIRECTDRAW_GLOBAL
|
||||
*/
|
||||
|
||||
typedef struct _DDHAL_MAPMEMORYDATA
|
||||
{
|
||||
LPDDRAWI_DDRAWSURFACE_GBL lpDD;
|
||||
BOOL bMap;
|
||||
HANDLE hProcess;
|
||||
FLATPTR fpProcess;
|
||||
HRESULT ddRVal;
|
||||
} DDHAL_MAPMEMORYDATA;
|
||||
|
||||
/* own macro to alloc memmory */
|
||||
#define DxHeapMemAlloc(m) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, m)
|
||||
#define DxHeapMemFree(p) HeapFree(GetProcessHeap(), 0, p);
|
||||
|
|
Loading…
Reference in a new issue