From 1d49310670eaaa26b722f16e3e186d7c300dbbc2 Mon Sep 17 00:00:00 2001 From: cxgeorge <> Date: Mon, 5 Aug 2002 22:29:25 +0000 Subject: [PATCH] always do SetForegroundWindow() --- panda/src/wdxdisplay8/wdxGraphicsWindow8.cxx | 13 ++++++------- panda/src/wgldisplay/wglGraphicsWindow.cxx | 4 ++++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/panda/src/wdxdisplay8/wdxGraphicsWindow8.cxx b/panda/src/wdxdisplay8/wdxGraphicsWindow8.cxx index 22eb1528cc..30739fd8f5 100644 --- a/panda/src/wdxdisplay8/wdxGraphicsWindow8.cxx +++ b/panda/src/wdxdisplay8/wdxGraphicsWindow8.cxx @@ -2407,6 +2407,12 @@ CreateScreenBuffersAndDevice(DXScreenData &Display) { if(dx_preserve_fpu_state) dwBehaviorFlags|=D3DCREATE_FPU_PRESERVE; + // 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. also doing this for windowed mode since it was requested. + SetForegroundWindow(Display.hWnd); + if(_props._fullscreen) { pPresParams->SwapEffect = D3DSWAPEFFECT_DISCARD; // we dont care about preserving contents of old frame pPresParams->FullScreen_PresentationInterval = (dx_sync_video ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE); @@ -2434,13 +2440,6 @@ CreateScreenBuffersAndDevice(DXScreenData &Display) { assert(pPresParams->SwapEffect == D3DSWAPEFFECT_DISCARD); // only valid effect for multisample #endif - - // 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, diff --git a/panda/src/wgldisplay/wglGraphicsWindow.cxx b/panda/src/wgldisplay/wglGraphicsWindow.cxx index ecc36e156c..eb938b501f 100644 --- a/panda/src/wgldisplay/wglGraphicsWindow.cxx +++ b/panda/src/wgldisplay/wglGraphicsWindow.cxx @@ -458,6 +458,8 @@ void wglGraphicsWindow::config() { ShowWindow(_mwindow, SW_SHOWNORMAL); ShowWindow(_mwindow, SW_SHOWNORMAL); + SetForegroundWindow(_mwindow); + int chg_result = ChangeDisplaySettings(&dm, CDS_FULLSCREEN); if (chg_result!=DISP_CHANGE_SUCCESSFUL) { @@ -504,6 +506,8 @@ void wglGraphicsWindow::config() { window_style, win_rect.left, win_rect.top, win_rect.right-win_rect.left, win_rect.bottom-win_rect.top, NULL, NULL, hinstance, 0); + + SetForegroundWindow(_mwindow); } if (!_mwindow) {