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
|
HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2
|
||||||
pDDSD, DWORD flags, HANDLE event)
|
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)
|
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;
|
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||||
|
|
||||||
|
if (event != NULL)
|
||||||
|
{
|
||||||
|
return DDERR_INVALIDPARAMS;
|
||||||
|
}
|
||||||
|
|
||||||
if (This->owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_LOCK)
|
if (This->owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_LOCK)
|
||||||
{
|
{
|
||||||
return Hal_DDrawSurface_Lock( iface, prect, pDDSD, flags, event);
|
return Hal_DDrawSurface_Lock( iface, prect, pDDSD, flags, event);
|
||||||
|
|
|
@ -10,6 +10,22 @@
|
||||||
#include <d3dhal.h>
|
#include <d3dhal.h>
|
||||||
#include <ddrawgdi.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 */
|
/* own macro to alloc memmory */
|
||||||
#define DxHeapMemAlloc(m) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, m)
|
#define DxHeapMemAlloc(m) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, m)
|
||||||
#define DxHeapMemFree(p) HeapFree(GetProcessHeap(), 0, p);
|
#define DxHeapMemFree(p) HeapFree(GetProcessHeap(), 0, p);
|
||||||
|
|
Loading…
Reference in a new issue