|
Navigation
- Home
- Community
- Development
- myReactOS
- Fundraiser 2012
Doxygen
- Main Page
- Alphabetical List
- Data Structures
- Directories
- File List
- Data Fields
- Globals
- Related Pages
Search
|
|
|
Definition at line 24 of file GetCaps.c.
Referenced by ThunkDirectDraw2_GetCaps(), ThunkDirectDraw4_GetCaps(), and ThunkDirectDraw_GetCaps().
{
HRESULT retVal = DDERR_INVALIDPARAMS;
DX_WINDBG_trace();
EnterCriticalSection( &ddcs );
_SEH2_TRY
{
if ((!pDriverCaps) && (!pHELCaps))
{
retVal = DDERR_INVALIDPARAMS;
_SEH2_LEAVE;
}
if ( (pDriverCaps) &&
(pDriverCaps->dwSize != sizeof(DDCAPS_DX1) ) &&
(pDriverCaps->dwSize != sizeof(DDCAPS_DX3) ) &&
(pDriverCaps->dwSize != sizeof(DDCAPS_DX5) ) &&
(pDriverCaps->dwSize != sizeof(DDCAPS_DX7 )) )
{
retVal = DDERR_INVALIDPARAMS;
_SEH2_LEAVE;
}
if ( (pHELCaps) &&
(pHELCaps->dwSize != sizeof(DDCAPS_DX1) ) &&
(pHELCaps->dwSize != sizeof(DDCAPS_DX3) ) &&
(pHELCaps->dwSize != sizeof(DDCAPS_DX5) ) &&
(pHELCaps->dwSize != sizeof(DDCAPS_DX7 )) )
{
retVal = DDERR_INVALIDPARAMS;
_SEH2_LEAVE;
}
if (pDriverCaps)
{
DDSCAPS2 ddscaps = { 0 };
LPDDCORECAPS CoreCaps = (LPDDCORECAPS)&This->lpLcl->lpGbl->ddCaps;
DWORD dwTotal = 0;
DWORD dwFree = 0;
Main_DirectDraw_GetAvailableVidMem4(This, &ddscaps, &dwTotal, &dwFree);
switch (pDriverCaps->dwSize)
{
case sizeof(DDCAPS_DX1):
{
LPDDCAPS_DX1 myCaps = (LPDDCAPS_DX1) pDriverCaps;
if (CoreCaps->dwSize == sizeof(DDCORECAPS))
{
memcpy(myCaps, CoreCaps, sizeof(DDCAPS_DX1));
}
myCaps->dwVidMemFree = dwFree;
myCaps->dwVidMemTotal = dwTotal;
myCaps->dwSize = sizeof(DDCAPS_DX1);
retVal = DD_OK;
}
break;
case sizeof(DDCAPS_DX3):
{
LPDDCAPS_DX3 myCaps = (LPDDCAPS_DX3) pDriverCaps;
if (CoreCaps->dwSize == sizeof(DDCORECAPS))
{
memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCAPS_DX3));
}
myCaps->dwVidMemFree = dwFree;
myCaps->dwVidMemTotal = dwTotal;
myCaps->dwSize = sizeof(DDCAPS_DX3);
retVal = DD_OK;
}
break;
case sizeof(DDCAPS_DX5):
{
LPDDCAPS_DX5 myCaps = (LPDDCAPS_DX5) pDriverCaps;
memset(&myCaps->dwNLVBCaps,0,sizeof(DDNONLOCALVIDMEMCAPS));
if (CoreCaps->dwSize == sizeof(DDCORECAPS))
{
memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS));
}
myCaps->dwVidMemFree = dwFree;
myCaps->dwVidMemTotal = dwTotal;
myCaps->dwSize = sizeof(DDCAPS_DX5);
retVal = DD_OK;
}
break;
case sizeof(DDCAPS_DX7):
{
LPDDCAPS_DX7 myCaps = (LPDDCAPS_DX7) pDriverCaps;
memset(&myCaps->dwNLVBCaps,0,sizeof(DDNONLOCALVIDMEMCAPS));
if (CoreCaps->dwSize == sizeof(DDCORECAPS))
{
memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS));
}
myCaps->dwVidMemFree = dwFree;
myCaps->dwVidMemTotal = dwTotal;
myCaps->ddsCaps.dwCaps = myCaps->ddsOldCaps.dwCaps;
myCaps->ddsCaps.dwCaps2 = 0;
myCaps->ddsCaps.dwCaps3 = 0;
myCaps->ddsCaps.dwCaps4 = 0;
myCaps->dwSize = sizeof(DDCAPS_DX7);
retVal = DD_OK;
}
break;
default:
retVal = DDERR_INVALIDPARAMS;
break;
}
}
if (pHELCaps)
{
LPDDCORECAPS CoreCaps = (LPDDCORECAPS)&This->lpLcl->lpGbl->ddHELCaps;
DWORD dwTotal = 0;
DWORD dwFree = 0;
switch (pHELCaps->dwSize)
{
case sizeof(DDCAPS_DX1):
{
LPDDCAPS_DX1 myCaps = (LPDDCAPS_DX1) pHELCaps;
if (CoreCaps->dwSize == sizeof(DDCORECAPS))
{
memcpy(myCaps, CoreCaps, sizeof(DDCAPS_DX1));
}
myCaps->dwVidMemFree = dwFree;
myCaps->dwVidMemTotal = dwTotal;
myCaps->dwSize = sizeof(DDCAPS_DX1);
retVal = DD_OK;
}
break;
case sizeof(DDCAPS_DX3):
{
LPDDCAPS_DX3 myCaps = (LPDDCAPS_DX3) pHELCaps;
if (CoreCaps->dwSize == sizeof(DDCORECAPS))
{
memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCAPS_DX3));
}
myCaps->dwVidMemFree = dwFree;
myCaps->dwVidMemTotal = dwTotal;
myCaps->dwSize = sizeof(DDCAPS_DX3);
retVal = DD_OK;
}
break;
case sizeof(DDCAPS_DX5):
{
LPDDCAPS_DX5 myCaps = (LPDDCAPS_DX5) pHELCaps;
memset(&myCaps->dwNLVBCaps,0,sizeof(DDNONLOCALVIDMEMCAPS));
if (CoreCaps->dwSize == sizeof(DDCORECAPS))
{
memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS));
}
myCaps->dwVidMemFree = dwFree;
myCaps->dwVidMemTotal = dwTotal;
myCaps->dwSize = sizeof(DDCAPS_DX5);
retVal = DD_OK;
}
break;
case sizeof(DDCAPS_DX7):
{
LPDDCAPS_DX7 myCaps = (LPDDCAPS_DX7) pHELCaps;
memset(&myCaps->dwNLVBCaps,0,sizeof(DDNONLOCALVIDMEMCAPS));
if (CoreCaps->dwSize == sizeof(DDCORECAPS))
{
memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS));
}
myCaps->dwVidMemFree = dwFree;
myCaps->dwVidMemTotal = dwTotal;
myCaps->ddsCaps.dwCaps = myCaps->ddsOldCaps.dwCaps;
myCaps->ddsCaps.dwCaps2 = 0;
myCaps->ddsCaps.dwCaps3 = 0;
myCaps->ddsCaps.dwCaps4 = 0;
myCaps->dwSize = sizeof(DDCAPS_DX7);
retVal = DD_OK;
}
break;
default:
retVal = DDERR_INVALIDPARAMS;
break;
}
}
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
retVal = DD_FALSE;
}
_SEH2_END;
LeaveCriticalSection( &ddcs );
return retVal;
}
|
Generated on Sat May 26 2012 05:00:30 for ReactOS by
1.7.6.1
|