From 1c4a115ec0ccfae29bd5420fb62d03e29b611539 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sat, 2 Dec 2006 10:27:56 +0000 Subject: [PATCH] adding check if it is IID_IDirectDraw7 on right place and learn it is lpDD->QueryInterface that optain the d3d interface. svn path=/trunk/; revision=25015 --- reactos/dll/directx/ddraw/main/ddraw_main.c | 4 + reactos/dll/directx/ddraw/rosdraw.h | 116 ++++++++++---------- reactos/dll/directx/ddraw/startup.c | 8 +- 3 files changed, 68 insertions(+), 60 deletions(-) diff --git a/reactos/dll/directx/ddraw/main/ddraw_main.c b/reactos/dll/directx/ddraw/main/ddraw_main.c index 7bf4e0dd4b9..8919180d5cd 100644 --- a/reactos/dll/directx/ddraw/main/ddraw_main.c +++ b/reactos/dll/directx/ddraw/main/ddraw_main.c @@ -28,6 +28,10 @@ Main_DirectDraw_QueryInterface (LPDIRECTDRAW7 iface, DX_WINDBG_trace(); + /* fixme + the D3D object cab be optain from here + Direct3D7 + */ if (IsEqualGUID(&IID_IDirectDraw7, id)) { /* DirectDraw7 Vtable */ diff --git a/reactos/dll/directx/ddraw/rosdraw.h b/reactos/dll/directx/ddraw/rosdraw.h index 305987a06cb..4efcbce35f2 100644 --- a/reactos/dll/directx/ddraw/rosdraw.h +++ b/reactos/dll/directx/ddraw/rosdraw.h @@ -620,11 +620,11 @@ DWORD CALLBACK HelDdSurfUpdateOverlay(LPDDHAL_UPDATEOVERLAYDATA lpUpDateOveryLay */ -#define DX_WINDBG_trace() -#define DX_STUB -#define DX_STUB_DD_OK return DD_OK; -#define DX_STUB_str(x) printf("%s",x); -#define DX_WINDBG_trace_res +//#define DX_WINDBG_trace() +//#define DX_STUB +//#define DX_STUB_DD_OK return DD_OK; +//#define DX_STUB_str(x) printf("%s",x); +//#define DX_WINDBG_trace_res /* use this if want doing a trace from a program @@ -635,58 +635,58 @@ DWORD CALLBACK HelDdSurfUpdateOverlay(LPDDHAL_UPDATEOVERLAYDATA lpUpDateOveryLay This marco does not create warings when you compile */ -//#define DX_STUB \ -//{ \ -// static BOOL firstcall = TRUE; \ -// if (firstcall) \ -// { \ -// char buffer[1024]; \ -// sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \ -// OutputDebugStringA(buffer); \ -// firstcall = FALSE; \ -// } \ -//} \ -// return DDERR_UNSUPPORTED; -// -//#define DX_STUB_DD_OK \ -//{ \ -// static BOOL firstcall = TRUE; \ -// if (firstcall) \ -// { \ -// char buffer[1024]; \ -// sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \ -// OutputDebugStringA(buffer); \ -// firstcall = FALSE; \ -// } \ -//} \ -// return DD_OK; -// -// -//#define DX_STUB_str(x) \ -// { \ -// char buffer[1024]; \ -// sprintf ( buffer, "Function %s %s (%s:%d)\n", __FUNCTION__,x,__FILE__,__LINE__ ); \ -// OutputDebugStringA(buffer); \ -// } -// -//#define DX_WINDBG_trace() \ -// static BOOL firstcallx = TRUE; \ -// if (firstcallx) \ -// { \ -// char buffer[1024]; \ -// sprintf ( buffer, "Enter Function %s (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \ -// OutputDebugStringA(buffer); \ -// firstcallx = TRUE; \ -// } -// -//#define DX_WINDBG_trace_res(width,height,bpp) \ -// static BOOL firstcallxx = TRUE; \ -// if (firstcallxx) \ -// { \ -// char buffer[1024]; \ -// sprintf ( buffer, "Setmode have been req width=%d, height=%d bpp=%d\n",width,height,bpp); \ -// OutputDebugStringA(buffer); \ -// firstcallxx = FALSE; \ -// } +#define DX_STUB \ +{ \ + static BOOL firstcall = TRUE; \ + if (firstcall) \ + { \ + char buffer[1024]; \ + sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \ + OutputDebugStringA(buffer); \ + firstcall = FALSE; \ + } \ +} \ + return DDERR_UNSUPPORTED; + +#define DX_STUB_DD_OK \ +{ \ + static BOOL firstcall = TRUE; \ + if (firstcall) \ + { \ + char buffer[1024]; \ + sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \ + OutputDebugStringA(buffer); \ + firstcall = FALSE; \ + } \ +} \ + return DD_OK; + + +#define DX_STUB_str(x) \ + { \ + char buffer[1024]; \ + sprintf ( buffer, "Function %s %s (%s:%d)\n", __FUNCTION__,x,__FILE__,__LINE__ ); \ + OutputDebugStringA(buffer); \ + } + +#define DX_WINDBG_trace() \ + static BOOL firstcallx = TRUE; \ + if (firstcallx) \ + { \ + char buffer[1024]; \ + sprintf ( buffer, "Enter Function %s (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \ + OutputDebugStringA(buffer); \ + firstcallx = TRUE; \ + } + +#define DX_WINDBG_trace_res(width,height,bpp) \ + static BOOL firstcallxx = TRUE; \ + if (firstcallxx) \ + { \ + char buffer[1024]; \ + sprintf ( buffer, "Setmode have been req width=%d, height=%d bpp=%d\n",width,height,bpp); \ + OutputDebugStringA(buffer); \ + firstcallxx = FALSE; \ + } #endif /* __DDRAW_PRIVATE */ diff --git a/reactos/dll/directx/ddraw/startup.c b/reactos/dll/directx/ddraw/startup.c index 40912e5bca0..d0a6a7a0183 100644 --- a/reactos/dll/directx/ddraw/startup.c +++ b/reactos/dll/directx/ddraw/startup.c @@ -881,14 +881,18 @@ Create_DirectDraw (LPGUID pGUID, BOOL ex) { LPDDRAWI_DIRECTDRAW_INT This; - DX_WINDBG_trace(); + + if (!IsEqualGUID(&IID_IDirectDraw7, id)) + { + return DDERR_INVALIDDIRECTDRAWGUID; + } This = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT)); if (This == NULL) { - return E_OUTOFMEMORY; + return DDERR_OUTOFMEMORY; } This->lpLcl = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT));