From d5f638d5d9b2233444a35c1ed6235a6b1dbb08a0 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 29 Dec 2003 03:09:29 +0000 Subject: [PATCH] fix one-frame window where input is accepted in the editor during tweenout after selecting "exit", resulting in crashes --- stepmania/src/ScreenManager.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 42c668a64f..b05b770731 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -635,10 +635,12 @@ void ScreenManager::PopTopScreen( ScreenMessage SM ) m_ScreenStack.erase(m_ScreenStack.end()-1, m_ScreenStack.end()); m_ScreensToDelete.push_back( pScreenToPop ); - // post to the new top - PostMessageToTopScreen( SM, 0 ); - PostMessageToTopScreen( SM_GainFocus, 0 ); - PostMessageToTopScreen( m_MessageSendOnPop, 0 ); + /* Post to the new top. This must be done now; otherwise, we'll have a single + * frame between popping and these messages, which can result in a frame where eg. + * input is accepted where it shouldn't be. */ + SendMessageToTopScreen( SM ); + SendMessageToTopScreen( SM_GainFocus ); + SendMessageToTopScreen( m_MessageSendOnPop ); m_MessageSendOnPop = SM_None; }