diff --git a/reactos/dll/directx/ddraw/rosdraw.h b/reactos/dll/directx/ddraw/rosdraw.h index 0b5468524ea..40742f6c612 100644 --- a/reactos/dll/directx/ddraw/rosdraw.h +++ b/reactos/dll/directx/ddraw/rosdraw.h @@ -41,31 +41,13 @@ VOID Cleanup(LPDIRECTDRAW7 iface); #define DxHeapMemFree(p) HeapFree(GetProcessHeap(), 0, p); \ p = NULL; */ -//#define DxHeapMemAlloc(p, m) { \ -// p = malloc(m); \ -// if (p != NULL) \ -// { \ -// ZeroMemory(p,m); \ -// } \ -// } - -/* a stupied bug in GCC it crash when malloc return NULL */ #define DxHeapMemAlloc(p, m) { \ - _SEH_TRY \ - { \ - p = malloc(m); \ - if (p != NULL) \ - { \ - ZeroMemory(p,m); \ - } \ - } \ - _SEH_HANDLE \ - { \ - p = NULL; \ - } \ - _SEH_END; \ + p = malloc(m); \ + if (p != NULL) \ + { \ + ZeroMemory(p,m); \ + } \ } - #define DxHeapMemFree(p) { \ free(p); \ p = NULL; \ diff --git a/reactos/dll/directx/ddraw/startup.c b/reactos/dll/directx/ddraw/startup.c index 0232e1e4773..c4f23a39a5f 100644 --- a/reactos/dll/directx/ddraw/startup.c +++ b/reactos/dll/directx/ddraw/startup.c @@ -13,9 +13,6 @@ #include "d3dhal.h" #include "ddrawgdi.h" -/* PSEH for SEH Support */ -#include - DDRAWI_DIRECTDRAW_GBL ddgbl; DDRAWI_DDRAWSURFACE_GBL ddSurfGbl; @@ -37,8 +34,6 @@ Create_DirectDraw (LPGUID pGUID, LPDIRECTDRAW* pIface, return DDERR_INVALIDPARAMS; } - DX_STUB_str("1 me\n"); - This = (LPDDRAWI_DIRECTDRAW_INT)*pIface; #if 0 @@ -112,29 +107,18 @@ Create_DirectDraw (LPGUID pGUID, LPDIRECTDRAW* pIface, LPDDRAWI_DIRECTDRAW_INT memThis; DxHeapMemAlloc(memThis, sizeof(DDRAWI_DIRECTDRAW_INT)); - - if (memThis != NULL) + This = memThis; + if (This == NULL) { - This = memThis; - if (This == NULL) - { - if (memThis != NULL) - DxHeapMemFree(memThis); + if (memThis != NULL) + DxHeapMemFree(memThis); - DX_STUB_str("DDERR_OUTOFMEMORY"); - return DDERR_OUTOFMEMORY; - } - } - else - { DX_STUB_str("DDERR_OUTOFMEMORY"); return DDERR_OUTOFMEMORY; } /* Fixme release memory alloc if we fail */ - DxHeapMemAlloc(This->lpLcl, sizeof(DDRAWI_DIRECTDRAW_INT)); - if (This->lpLcl == NULL) { DX_STUB_str("DDERR_OUTOFMEMORY"); @@ -142,8 +126,6 @@ Create_DirectDraw (LPGUID pGUID, LPDIRECTDRAW* pIface, } #endif - DX_STUB_str("6 me\n"); - This->lpLcl->lpGbl = &ddgbl; *pIface = (LPDIRECTDRAW)This; @@ -490,6 +472,10 @@ StartDirectDrawHal(LPDIRECTDRAW iface, BOOL reenable) // FIXME Close DX fristcall and second call return DD_FALSE; } + + + + DX_STUB_str("Here\n"); /* Alloc mpFourCC */ if (This->lpLcl->lpGbl->lpdwFourCC != NULL) @@ -497,18 +483,24 @@ StartDirectDrawHal(LPDIRECTDRAW iface, BOOL reenable) DxHeapMemFree(This->lpLcl->lpGbl->lpdwFourCC); } - if (mHALInfo.ddCaps.dwNumFourCCCodes > 0 ) - { - DxHeapMemAlloc(mpFourCC, (sizeof(DWORD) * (mHALInfo.ddCaps.dwNumFourCCCodes)) + sizeof(DWORD) ); + // if (mHALInfo.ddCaps.dwNumFourCCCodes > 0 ) + // { + //mpFourCC = (DWORD *) DxHeapMemAlloc( sizeof(DWORD) * 21); + /* DrFred uncomet line 499 see if u getting werid crash in + * u computer, run the ddraw_test around 3-4 times + */ + //DxHeapMemAlloc(mpFourCC, sizeof(DWORD) * 21); + // mpFourCC = (DWORD *) DxHeapMemAlloc(sizeof(DWORD) * (mHALInfo.ddCaps.dwNumFourCCCodes + 2)); + /* if (mpFourCC == NULL) { DxHeapMemFree(ddgbl.lpDDCBtmp); // FIXME Close DX fristcall and second call return DD_FALSE; } - - } + */ + // } DX_STUB_str("Here\n");