Author: greatlrd Date: Sat Jun 9 00:55:48 2007 New Revision: 27081
URL: http://svn.reactos.org/svn/reactos?rev=27081&view=rev Log: rename Main_DirectDraw_GetAvailableVidMem to Main_DirectDraw_GetAvailableVidMem4 Fixing smaller bugs in Main_DirectDraw_GetAvailableVidMem4, complete works simluare now to ms version of this api Implement Main_DirectDraw_GetAvailableVidMem for directdraw2 and directdraw3
Modified: trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c trunk/reactos/dll/directx/ddraw/Surface/surface.h trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c
Modified: trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/Ddraw/ddr... ============================================================================== --- trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c (original) +++ trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c Sat Jun 9 00:55:48 2007 @@ -173,7 +173,29 @@ }
HRESULT WINAPI -Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps, +Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW2 iface, LPDDSCAPS ddscaps, LPDWORD dwTotal, LPDWORD dwFree) +{ + DDSCAPS2 myddscaps; + HRESULT retValue = DD_OK; + + ZeroMemory(&myddscaps, sizeof(DDSCAPS2)); + + _SEH_TRY + { + myddscaps.dwCaps = ddscaps->dwCaps; + retValue = Main_DirectDraw_GetAvailableVidMem4((LPDIRECTDRAW7)iface, &myddscaps, dwTotal, dwFree); + } + _SEH_HANDLE + { + retValue = DDERR_INVALIDPARAMS; + } + _SEH_END; + + return retValue; +} + +HRESULT WINAPI +Main_DirectDraw_GetAvailableVidMem4(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps, LPDWORD dwTotal, LPDWORD dwFree) { HRESULT retVal = DD_OK; @@ -218,15 +240,14 @@ _SEH_LEAVE; }
- /* fixme - if ( ddscaps->dwCaps3 & (DDSCAPS_BACKBUFFER | DDSCAPS_COMPLEX | DDSCAPS_FLIP | - DDSCAPS_FRONTBUFFER | DDSCAPS_PALETTE | DDSCAPS_SYSTEMMEMORY | - DDSCAPS_VISIBLE | DDSCAPS_WRITEONLY | DDSCAPS_OWNDC)) - { - retVal = DDERR_INVALIDPARAMS; + if ( ddscaps->dwCaps3 & ~( DDSCAPS3_MULTISAMPLE_QUALITY_MASK | DDSCAPS3_MULTISAMPLE_MASK | + DDSCAPS3_RESERVED1 | DDSCAPS3_RESERVED2 | + DDSCAPS3_LIGHTWEIGHTMIPMAP | DDSCAPS3_AUTOGENMIPMAP | + DDSCAPS3_DMAP)) + { + retVal = DDERR_INVALIDCAPS; _SEH_LEAVE; } - */
if ( ddscaps->dwCaps4) { @@ -246,6 +267,12 @@ if (This->lpLcl->lpDDCB->HALDDMiscellaneous.GetAvailDriverMemory(&memdata) == DDHAL_DRIVER_NOTHANDLED) { retVal = DDERR_NODIRECTDRAWHW; + + if (dwTotal) + *dwTotal = 0; + + if (dwFree) + *dwFree = 0; } else { @@ -410,7 +437,7 @@ Main_DirectDraw_SetCooperativeLevel, Main_DirectDraw_SetDisplayMode, Main_DirectDraw_WaitForVerticalBlank, - Main_DirectDraw_GetAvailableVidMem, + Main_DirectDraw_GetAvailableVidMem4, Main_DirectDraw_GetSurfaceFromDC, Main_DirectDraw_RestoreAllSurfaces, Main_DirectDraw_TestCooperativeLevel,
Modified: trunk/reactos/dll/directx/ddraw/Surface/surface.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/Surface/s... ============================================================================== --- trunk/reactos/dll/directx/ddraw/Surface/surface.h (original) +++ trunk/reactos/dll/directx/ddraw/Surface/surface.h Sat Jun 9 00:55:48 2007 @@ -53,7 +53,8 @@ HRESULT WINAPI Main_DDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface, LPDDSURFACEDESC2 pDDSD); HRESULT WINAPI Main_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags, LPDDSURFACEDESC2 pDDSD, LPVOID context, LPDDENUMMODESCALLBACK2 callback); HRESULT WINAPI Main_DDrawSurface_SetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface, DDSURFACEDESC2 *DDSD, DWORD Flags); -HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps, LPDWORD total, LPDWORD free); +HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW2 iface, LPDDSCAPS ddscaps, LPDWORD total, LPDWORD free); +HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem4(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps, LPDWORD total, LPDWORD free);
// hel callbacks DWORD CALLBACK HelDdDestroyDriver(LPDDHAL_DESTROYDRIVERDATA lpDestroyDriver);
Modified: trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/thunks/dd... ============================================================================== --- trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c (original) +++ trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c Sat Jun 9 00:55:48 2007 @@ -775,36 +775,9 @@ return Main_DirectDraw_WaitForVerticalBlank((LPDIRECTDRAW7) iface, dwFlags, hEvent); }
-HRESULT WINAPI -ThunkDirectDraw2_GetAvailableVidMem(LPDIRECTDRAW2 iface, LPDDSCAPS pCaps, LPDWORD pdwTotal, LPDWORD pdwFree) -{ - HRESULT retValue = DDERR_GENERIC; - - DX_WINDBG_trace(); - - if (pCaps != NULL) - { - DDSCAPS2 pCaps2; - ZeroMemory(&pCaps2,sizeof(DDSCAPS2)); - memcpy(&pCaps2, pCaps, sizeof(DDSCAPS)); - retValue = Main_DirectDraw_GetAvailableVidMem((LPDIRECTDRAW7) iface, &pCaps2, pdwTotal, pdwFree); - memcpy(pCaps, &pCaps2, sizeof(DDSCAPS)); - } - else - { - retValue = Main_DirectDraw_GetAvailableVidMem((LPDIRECTDRAW7) iface, NULL, pdwTotal, pdwFree); - } - - return retValue; -} - -HRESULT WINAPI -ThunkDirectDraw4_GetAvailableVidMem(LPDIRECTDRAW4 iface, LPDDSCAPS2 pCaps, LPDWORD pdwTotal, LPDWORD pdwFree) -{ - DX_WINDBG_trace(); - - return Main_DirectDraw_GetAvailableVidMem((LPDIRECTDRAW7) iface, pCaps, pdwTotal, pdwFree); -} + + +
HRESULT WINAPI ThunkDirectDraw4_GetSurfaceFromDC(LPDIRECTDRAW4 iface, HDC hdc, LPDIRECTDRAWSURFACE4 *pSurf)