Game Development Community

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);
}

}