mirror of
https://github.com/reactos/reactos.git
synced 2024-09-09 04:10:19 +00:00
Fixing allot bugs in Main_DirectDraw_GetAvailableVidMem, it is still buggi
svn path=/trunk/; revision=27075
This commit is contained in:
parent
032150f031
commit
edddb00510
|
@ -184,7 +184,8 @@ Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,
|
||||||
_SEH_TRY
|
_SEH_TRY
|
||||||
{
|
{
|
||||||
// There is no HEL implentation of this api
|
// There is no HEL implentation of this api
|
||||||
if (!(This->lpLcl->lpDDCB->cbDDMiscellaneousCallbacks.dwFlags & DDHAL_MISCCB32_GETAVAILDRIVERMEMORY))
|
if (!(This->lpLcl->lpDDCB->HALDDMiscellaneous.dwFlags & DDHAL_MISCCB32_GETAVAILDRIVERMEMORY) ||
|
||||||
|
(This->lpLcl->lpGbl->dwFlags & DDRAWI_NOHARDWARE) )
|
||||||
{
|
{
|
||||||
retVal = DDERR_NODIRECTDRAWHW;
|
retVal = DDERR_NODIRECTDRAWHW;
|
||||||
}
|
}
|
||||||
|
@ -193,31 +194,63 @@ Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,
|
||||||
if ((!dwTotal && !dwFree) || !ddscaps)
|
if ((!dwTotal && !dwFree) || !ddscaps)
|
||||||
{
|
{
|
||||||
retVal = DDERR_INVALIDPARAMS;
|
retVal = DDERR_INVALIDPARAMS;
|
||||||
|
_SEH_LEAVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ddscaps->dwCaps & (DDSCAPS_BACKBUFFER | DDSCAPS_COMPLEX | DDSCAPS_FLIP |
|
||||||
|
DDSCAPS_FRONTBUFFER | DDSCAPS_PALETTE | DDSCAPS_SYSTEMMEMORY |
|
||||||
|
DDSCAPS_VISIBLE | DDSCAPS_WRITEONLY | DDSCAPS_OWNDC))
|
||||||
|
{
|
||||||
|
retVal = DDERR_INVALIDPARAMS;
|
||||||
|
_SEH_LEAVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fixme
|
||||||
|
if ( ddscaps->dwCaps2 & (DDSCAPS_BACKBUFFER | DDSCAPS_COMPLEX | DDSCAPS_FLIP |
|
||||||
|
DDSCAPS_FRONTBUFFER | DDSCAPS_PALETTE | DDSCAPS_SYSTEMMEMORY |
|
||||||
|
DDSCAPS_VISIBLE | DDSCAPS_WRITEONLY | DDSCAPS_OWNDC))
|
||||||
|
{
|
||||||
|
retVal = DDERR_INVALIDPARAMS;
|
||||||
|
_SEH_LEAVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ddscaps->dwCaps3 & (DDSCAPS_BACKBUFFER | DDSCAPS_COMPLEX | DDSCAPS_FLIP |
|
||||||
|
DDSCAPS_FRONTBUFFER | DDSCAPS_PALETTE | DDSCAPS_SYSTEMMEMORY |
|
||||||
|
DDSCAPS_VISIBLE | DDSCAPS_WRITEONLY | DDSCAPS_OWNDC))
|
||||||
|
{
|
||||||
|
retVal = DDERR_INVALIDPARAMS;
|
||||||
|
_SEH_LEAVE;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ( ddscaps->dwCaps4)
|
||||||
|
{
|
||||||
|
retVal = DDERR_INVALIDCAPS;
|
||||||
|
_SEH_LEAVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ZeroMemory(&memdata, sizeof(DDHAL_GETAVAILDRIVERMEMORYDATA));
|
||||||
|
memdata.lpDD = This->lpLcl->lpGbl;
|
||||||
|
memdata.ddRVal = DDERR_INVALIDPARAMS;
|
||||||
|
|
||||||
|
memdata.ddsCapsEx.dwCaps2 = ddscaps->dwCaps2;
|
||||||
|
memdata.ddsCapsEx.dwCaps3 = ddscaps->dwCaps3;
|
||||||
|
|
||||||
|
This->lpLcl->lpGbl->hDD = This->lpLcl->hDD;
|
||||||
|
|
||||||
|
if (This->lpLcl->lpDDCB->HALDDMiscellaneous.GetAvailDriverMemory(&memdata) == DDHAL_DRIVER_NOTHANDLED)
|
||||||
|
{
|
||||||
|
retVal = DDERR_NODIRECTDRAWHW;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (dwTotal)
|
||||||
|
*dwTotal = memdata.dwTotal;
|
||||||
|
|
||||||
ZeroMemory(&memdata, sizeof(DDHAL_GETAVAILDRIVERMEMORYDATA));
|
if (dwFree)
|
||||||
memdata.lpDD = This->lpLcl->lpGbl;
|
*dwFree = memdata.dwFree;
|
||||||
memdata.ddRVal = DDERR_INVALIDPARAMS;
|
|
||||||
memcpy(&memdata.DDSCaps, ddscaps, sizeof(DDSCAPS2));
|
|
||||||
|
|
||||||
This->lpLcl->lpGbl->hDD = This->lpLcl->hDD;
|
retVal = memdata.ddRVal;
|
||||||
|
|
||||||
if (This->lpLcl->lpDDCB->HALDDMiscellaneous.GetAvailDriverMemory(&memdata) == DDHAL_DRIVER_NOTHANDLED)
|
|
||||||
{
|
|
||||||
retVal = DDERR_NODIRECTDRAWHW;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (dwTotal)
|
|
||||||
*dwTotal = memdata.dwTotal;
|
|
||||||
|
|
||||||
if (dwFree)
|
|
||||||
*dwFree = memdata.dwFree;
|
|
||||||
|
|
||||||
retVal = memdata.ddRVal;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue