fix init fullscrn hang problem

This commit is contained in:
cxgeorge 2002-08-05 05:02:25 +00:00
parent f9ad6abadb
commit 7a33acfa3b
2 changed files with 15 additions and 3 deletions

View File

@ -2022,11 +2022,16 @@ CreateScreenBuffersAndDevice(DXScreenData &Display) {
}
*/
DX_DECLARE_CLEAN(DDCAPS,DDCaps);
pDD->GetCaps(&DDCaps,NULL);
// if window is not foreground in exclusive mode, ddraw thinks you are 'not active', so
// it changes your WM_ACTIVATEAPP from true to false, causing us
// to go into a 'wait-for WM_ACTIVATEAPP true' loop, and the event never comes so we hang
// in fullscreen wait.
SetForegroundWindow(Display.hWnd);
if(dx_full_screen) {
// Setup to create the primary surface w/backbuffer
DX_DECLARE_CLEAN(DDSURFACEDESC2,ddsd)

View File

@ -2434,7 +2434,14 @@ CreateScreenBuffersAndDevice(DXScreenData &Display) {
assert(pPresParams->SwapEffect == D3DSWAPEFFECT_DISCARD); // only valid effect for multisample
#endif
ClearToBlack(GetDesktopWindow(),_props);
// if window is not foreground in exclusive mode, ddraw thinks you are 'not active', so
// it changes your WM_ACTIVATEAPP from true to false, causing us
// to go into a 'wait-for WM_ACTIVATEAPP true' loop, and the event never comes so we hang
// in fullscreen wait.
SetForegroundWindow(Display.hWnd);
ClearToBlack(Display.hWnd,_props);
hr = pD3D8->CreateDevice(Display.CardIDNum, D3DDEVTYPE_HAL, _pParentWindowGroup->_hParentWindow,
dwBehaviorFlags, pPresParams, &Display.pD3DDevice);