Add second call to DdQueryDirectDrawObject. Modified: trunk/reactos/lib/ddraw/hal/ddraw.c Modified: trunk/reactos/lib/ddraw/rosdraw.h _____
Modified: trunk/reactos/lib/ddraw/hal/ddraw.c --- trunk/reactos/lib/ddraw/hal/ddraw.c 2005-08-09 11:18:48 UTC (rev 17237) +++ trunk/reactos/lib/ddraw/hal/ddraw.c 2005-08-09 13:57:03 UTC (rev 17238) @@ -19,11 +19,11 @@
return DDERR_INVALIDPARAMS;
This->HalInfo.dwSize = sizeof(DDHALINFO); + This->D3dDriverData.dwSize = sizeof(D3DHAL_GLOBALDRIVERDATA); This->DriverCallbacks.DdMain.dwSize = sizeof(DDHAL_DDCALLBACKS); This->DriverCallbacks.DdSurface.dwSize = sizeof(DDHAL_DDSURFACECALLBACKS); This->DriverCallbacks.DdPalette.dwSize = sizeof(DDHAL_DDPALETTECALLBACKS); This->DriverCallbacks.D3dMain.dwSize = sizeof(D3DHAL_CALLBACKS); - This->DriverCallbacks.D3dDriverData.dwSize = sizeof(D3DHAL_GLOBALDRIVERDATA); This->DriverCallbacks.D3dBufferCallbacks.dwSize = sizeof(DDHAL_DDEXEBUFCALLBACKS);
if(!DdQueryDirectDrawObject ( @@ -33,15 +33,31 @@ &This->DriverCallbacks.DdSurface, &This->DriverCallbacks.DdPalette, &This->DriverCallbacks.D3dMain, - &This->DriverCallbacks.D3dDriverData, + &This->D3dDriverData, &This->DriverCallbacks.D3dBufferCallbacks, NULL, NULL, NULL )) return DDERR_INVALIDPARAMS;
- // ToDo: Second DdQueryDirectDrawObject without the three NULLs + This->pD3dTextureFormats = HeapAlloc(GetProcessHeap(), 0, sizeof(DDSURFACEDESC) * This->D3dDriverData.dwNumTextureFormats); + This->pdwFourCC = HeapAlloc(GetProcessHeap(), 0, sizeof(DWORD) * This->HalInfo.ddCaps.dwNumFourCCCodes); + This->pvmList = HeapAlloc(GetProcessHeap(), 0, sizeof(VIDMEM) * This->HalInfo.vmiData.dwNumHeaps);
+ if(!DdQueryDirectDrawObject ( + &This->DirectDrawGlobal, + &This->HalInfo, + &This->DriverCallbacks.DdMain, + &This->DriverCallbacks.DdSurface, + &This->DriverCallbacks.DdPalette, + &This->DriverCallbacks.D3dMain, + &This->D3dDriverData, + &This->DriverCallbacks.D3dBufferCallbacks, + This->pD3dTextureFormats, + This->pdwFourCC, + This->pvmList )) + return DDERR_INVALIDPARAMS; + return DD_OK; }
@@ -55,8 +71,11 @@ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
DdDeleteDirectDrawObject (&This->DirectDrawGlobal); + + if(This->pD3dTextureFormats) + HeapFree(GetProcessHeap(), 0, This->pD3dTextureFormats); + if(This->pdwFourCC) + HeapFree(GetProcessHeap(), 0, This->pdwFourCC); + if(This->pvmList) + HeapFree(GetProcessHeap(), 0, This->pvmList); } - - - - _____
Modified: trunk/reactos/lib/ddraw/rosdraw.h --- trunk/reactos/lib/ddraw/rosdraw.h 2005-08-09 11:18:48 UTC (rev 17237) +++ trunk/reactos/lib/ddraw/rosdraw.h 2005-08-09 13:57:03 UTC (rev 17238) @@ -22,7 +22,6 @@
DDHAL_DDSURFACECALLBACKS DdSurface; DDHAL_DDPALETTECALLBACKS DdPalette; D3DHAL_CALLBACKS D3dMain; - D3DHAL_GLOBALDRIVERDATA D3dDriverData; DDHAL_DDEXEBUFCALLBACKS D3dBufferCallbacks;
} DRIVERCALLBACKS; @@ -33,8 +32,13 @@ DRIVERCALLBACKS DriverCallbacks; DWORD ref;
- DDHALINFO HalInfo; + DDHALINFO HalInfo; + D3DHAL_GLOBALDRIVERDATA D3dDriverData;
+ LPDDSURFACEDESC pD3dTextureFormats; + LPDWORD pdwFourCC; + LPVIDMEM pvmList; + HWND window; DWORD cooperative_level; HDC hdc;