From 157883db74661fe967d481a02bbb404f4a7f1818 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sun, 17 Jun 2007 11:22:23 +0000 Subject: [PATCH] start implement of DirectDraw_GetCaps svn path=/trunk/; revision=27211 --- reactos/dll/directx/ddraw/Ddraw/ddraw_main.c | 70 ++++++++++++++++++- reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c | 7 -- 2 files changed, 69 insertions(+), 8 deletions(-) diff --git a/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c b/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c index 24677b63a28..a0ee6653fff 100644 --- a/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c +++ b/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c @@ -131,7 +131,7 @@ Main_DirectDraw_QueryInterface (LPDIRECTDRAW7 iface, } else { - /* DirectDraw4 Vtable */ + /* DirectDraw Vtable */ newThis->lpVtbl = &DirectDraw_Vtable; newThis->lpLcl = This->lpLcl; newThis->lpLink = This; @@ -451,6 +451,74 @@ Main_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7 iface, LPDWORD lpNumCodes, LPDWORD return retVal; } +HRESULT WINAPI +Main_DirectDraw_GetCaps( LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps, + LPDDCAPS pHELCaps) +{ + HRESULT retVal = DD_OK; + + DX_WINDBG_trace(); + if (!(IsBadWritePtr(pDriverCaps,sizeof(LPDDCAPS)))) + { + if (!(IsBadWritePtr(pHELCaps,sizeof(LPDDCAPS)))) + { + return DDERR_INVALIDPARAMS; + } + } + + if ((IsBadWritePtr(pDriverCaps,sizeof(LPDDCAPS)))) + { + /* Setup hardware caps */ + switch (pDriverCaps->dwSize) + { + case sizeof(DDCAPS_DX1): + retVal = DDERR_INVALIDPARAMS; + break; + case sizeof(DDCAPS_DX3): + retVal = DDERR_INVALIDPARAMS; + break; + case sizeof(DDCAPS_DX5): + retVal = DDERR_INVALIDPARAMS; + break; + + /* DDCAPS_DX6 is same as DDCAPS_DX7 */ + case sizeof(DDCAPS_DX7): + retVal = DDERR_INVALIDPARAMS; + break; + default: + retVal = DDERR_INVALIDPARAMS; + break; + } + } + + if ((IsBadWritePtr(pHELCaps,sizeof(LPDDCAPS)))) + { + /* Setup hardware caps */ + switch (pHELCaps->dwSize) + { + case sizeof(DDCAPS_DX1): + retVal = DDERR_INVALIDPARAMS; + break; + case sizeof(DDCAPS_DX3): + retVal = DDERR_INVALIDPARAMS; + break; + case sizeof(DDCAPS_DX5): + retVal = DDERR_INVALIDPARAMS; + break; + + /* DDCAPS_DX6 is same as DDCAPS_DX7 */ + case sizeof(DDCAPS_DX7): + retVal = DDERR_INVALIDPARAMS; + break; + default: + retVal = DDERR_INVALIDPARAMS; + break; + } + } +} + + + /* diff --git a/reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c b/reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c index 27777671b87..3c42b1456a9 100644 --- a/reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c +++ b/reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c @@ -57,13 +57,6 @@ Main_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface) DX_STUB; } -HRESULT WINAPI -Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps, - LPDDCAPS pHELCaps) -{ - DX_WINDBG_trace(); - DX_STUB; -} HRESULT WINAPI Main_DirectDraw_GetGDISurface(LPDIRECTDRAW7 iface,