mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 09:50:02 +00:00
Fixing some bugs in startup.c
1. check for DDHALINFO_GETDRIVERINFOSET before using of DdGetDriverInfo, it exists two diffent version of DdGetDriverInfo2 2. Adding a fixme for fixing CreateSurfaceEx, GetDriverState and DestroyDDLocal callbacks for HAL, and adding partly code in the fixme. svn path=/trunk/; revision=27183
This commit is contained in:
parent
4bac086c86
commit
4db57afdf1
1 changed files with 46 additions and 11 deletions
|
@ -532,22 +532,57 @@ StartDirectDrawHal(LPDIRECTDRAW iface, BOOL reenable)
|
||||||
// DxHeapMemFree( mpTextures);
|
// DxHeapMemFree( mpTextures);
|
||||||
|
|
||||||
/* FIXME D3D setup mD3dCallbacks and mD3dDriverData */
|
/* FIXME D3D setup mD3dCallbacks and mD3dDriverData */
|
||||||
|
|
||||||
DDHAL_GETDRIVERINFODATA DdGetDriverInfo = { 0 };
|
DDHAL_GETDRIVERINFODATA DdGetDriverInfo = { 0 };
|
||||||
DdGetDriverInfo.dwSize = sizeof (DDHAL_GETDRIVERINFODATA);
|
|
||||||
DdGetDriverInfo.guidInfo = GUID_MiscellaneousCallbacks;
|
|
||||||
|
|
||||||
DdGetDriverInfo.lpvData = (PVOID)&ddgbl.lpDDCBtmp->HALDDMiscellaneous;
|
|
||||||
|
|
||||||
DdGetDriverInfo.dwExpectedSize = sizeof (DDHAL_DDMISCELLANEOUSCALLBACKS);
|
if (mHALInfo.dwFlags & DDHALINFO_GETDRIVERINFOSET)
|
||||||
|
|
||||||
if(mHALInfo.GetDriverInfo (&DdGetDriverInfo) == DDHAL_DRIVER_NOTHANDLED || DdGetDriverInfo.ddRVal != DD_OK)
|
|
||||||
{
|
{
|
||||||
DxHeapMemFree(mpFourCC);
|
DdGetDriverInfo.dwSize = sizeof (DDHAL_GETDRIVERINFODATA);
|
||||||
DxHeapMemFree(mpTextures);
|
DdGetDriverInfo.guidInfo = GUID_MiscellaneousCallbacks;
|
||||||
DxHeapMemFree(ddgbl.lpDDCBtmp);
|
DdGetDriverInfo.lpvData = (PVOID)&ddgbl.lpDDCBtmp->HALDDMiscellaneous;
|
||||||
// FIXME Close DX fristcall and second call
|
DdGetDriverInfo.dwExpectedSize = sizeof (DDHAL_DDMISCELLANEOUSCALLBACKS);
|
||||||
return DD_FALSE;
|
|
||||||
|
if(mHALInfo.GetDriverInfo (&DdGetDriverInfo) == DDHAL_DRIVER_NOTHANDLED || DdGetDriverInfo.ddRVal != DD_OK)
|
||||||
|
{
|
||||||
|
DxHeapMemFree(mpFourCC);
|
||||||
|
DxHeapMemFree(mpTextures);
|
||||||
|
DxHeapMemFree(ddgbl.lpDDCBtmp);
|
||||||
|
// FIXME Close DX fristcall and second call
|
||||||
|
return DD_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlZeroMemory(&DdGetDriverInfo, sizeof(DDHAL_GETDRIVERINFODATA));
|
||||||
|
DdGetDriverInfo.dwSize = sizeof (DDHAL_GETDRIVERINFODATA);
|
||||||
|
DdGetDriverInfo.guidInfo = GUID_Miscellaneous2Callbacks;
|
||||||
|
|
||||||
|
/* FIXME
|
||||||
|
DdGetDriverInfo.lpvData = (PVOID)&ddgbl.lpDDCBtmp->HALDDMiscellaneous;
|
||||||
|
DdGetDriverInfo.dwExpectedSize = sizeof (DDHAL_DDMISCELLANEOUS2CALLBACKS);
|
||||||
|
|
||||||
|
if(mHALInfo.GetDriverInfo (&DdGetDriverInfo) == DDHAL_DRIVER_NOTHANDLED || DdGetDriverInfo.ddRVal != DD_OK)
|
||||||
|
{
|
||||||
|
DxHeapMemFree(mpFourCC);
|
||||||
|
DxHeapMemFree(mpTextures);
|
||||||
|
DxHeapMemFree(ddgbl.lpDDCBtmp);
|
||||||
|
// FIXME Close DX fristcall and second call
|
||||||
|
return DD_FALSE;
|
||||||
|
}
|
||||||
|
DD_MISCELLANEOUS2CALLBACKS
|
||||||
|
{
|
||||||
|
DWORD dwSize;
|
||||||
|
DWORD dwFlags;
|
||||||
|
PDD_ALPHABLT AlphaBlt; // unsuse acoding msdn and always set to NULL
|
||||||
|
PDD_CREATESURFACEEX CreateSurfaceEx;
|
||||||
|
PDD_GETDRIVERSTATE GetDriverState;
|
||||||
|
PDD_DESTROYDDLOCAL DestroyDDLocal;
|
||||||
|
}
|
||||||
|
DDHAL_MISC2CB32_CREATESURFACEEX
|
||||||
|
DDHAL_MISC2CB32_GETDRIVERSTATE
|
||||||
|
DDHAL_MISC2CB32_DESTROYDDLOCAL
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue