From 43daaf5a1f89755451c53c2dc58ae5d1c888223e Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Wed, 28 May 2008 01:21:52 +0000 Subject: [PATCH] Fix crash on join when SSM is preloaded but doesn't have focus. --- stepmania/src/Screen.cpp | 3 +++ stepmania/src/Screen.h | 3 +++ stepmania/src/ScreenSelectMusic.cpp | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index c9a8f4d807..46df9cd91c 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -42,6 +42,7 @@ void Screen::Init() SetFOV( 0 ); m_smSendOnPop = SM_None; + m_bRunning = false; ActorUtil::LoadAllCommandsFromName( *this, m_sName, "Screen" ); @@ -68,6 +69,7 @@ void Screen::Init() void Screen::BeginScreen() { + m_bRunning = true; m_bFirstUpdate = true; /* Screens set these when they determine their next screen dynamically. Reset them @@ -87,6 +89,7 @@ void Screen::BeginScreen() void Screen::EndScreen() { this->PlayCommand( "End" ); + m_bRunning = false; } void Screen::Update( float fDeltaTime ) diff --git a/stepmania/src/Screen.h b/stepmania/src/Screen.h index 1ae1af1193..b503f59041 100644 --- a/stepmania/src/Screen.h +++ b/stepmania/src/Screen.h @@ -87,6 +87,9 @@ protected: float m_fLockInputSecs; + /* If currently between BeginScreen/EndScreen calls: */ + bool m_bRunning; + public: RString GetNextScreenName() const; RString GetPrevScreen() const; diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index ae5a4dd523..22e8459803 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -675,7 +675,7 @@ void ScreenSelectMusic::ChangeDifficulty( PlayerNumber pn, int dir ) void ScreenSelectMusic::HandleMessage( const Message &msg ) { - if( msg == Message_PlayerJoined ) + if( m_bRunning && msg == Message_PlayerJoined ) { // The current steps may no longer be playable. If one player has double steps // selected, they are no longer playable now that P2 has joined.