TGEA 1.7.1 DX deadlock (duplicate - ignore)
by Michael Gingerich · in Torque Game Engine Advanced · 10/21/2008 (5:30 am) · 1 replies
TestCooperativeLevel() will keep returning D3DERR_DEVICELOST indefinitely unless the windows message queue is being processed. beginSceneInternal() can go into a deadlock if the DirectX device needs to be reset.
void GFXPCD3D9Device::beginSceneInternal()
{
// Make sure we have a device
HRESULT res = mD3DDevice->TestCooperativeLevel();
while(res == D3DERR_DEVICELOST)
{
// Lost device! Just keep querying
res = mD3DDevice->TestCooperativeLevel();
Con::warnf("GFXD3D9Device::beginScene - Device needs to be reset, waiting on device...");
Sleep(50);
}
}
void GFXPCD3D9Device::beginSceneInternal()
{
// Make sure we have a device
HRESULT res = mD3DDevice->TestCooperativeLevel();
while(res == D3DERR_DEVICELOST)
{
// Lost device! Just keep querying
res = mD3DDevice->TestCooperativeLevel();
Con::warnf("GFXD3D9Device::beginScene - Device needs to be reset, waiting on device...");
Sleep(50);
}
}
Torque Owner Michael Gingerich
Default Studio Name