diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 7c0e58e48f..d041e32bc5 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -403,22 +403,20 @@ retry: CString sNewBGA; if( pNewScreen->UsesBackground() ) sNewBGA = THEME->GetPathB(sScreenName,"background"); - if( sNewBGA.empty() ) - { - SAFE_DELETE( m_pSharedBGA ); - m_pSharedBGA = new Actor; - m_sLastLoadedBackgroundPath = ""; - } - else if( m_sLastLoadedBackgroundPath != sNewBGA ) + if( sNewBGA != m_pSharedBGA->GetName() ) { // Create the new background before deleting the previous so that we keep // any common textures loaded. - Actor *pNewBGA = ActorUtil::MakeActor( sNewBGA ); + Actor *pNewBGA; + if( sNewBGA.empty() ) + pNewBGA = new Actor; + else + pNewBGA = ActorUtil::MakeActor( sNewBGA ); + pNewBGA->SetName( sNewBGA ); + SAFE_DELETE( m_pSharedBGA ); m_pSharedBGA = pNewBGA; m_pSharedBGA->PlayCommand( "On" ); - - m_sLastLoadedBackgroundPath = sNewBGA; } bool bIsOnSystemMenu = pNewScreen->GetScreenType() == system_menu; diff --git a/stepmania/src/ScreenManager.h b/stepmania/src/ScreenManager.h index 49e3faddeb..de09a9c836 100644 --- a/stepmania/src/ScreenManager.h +++ b/stepmania/src/ScreenManager.h @@ -107,7 +107,6 @@ private: Actor *m_pSharedBGA; // BGA object that's persistent between screens - CString m_sLastLoadedBackgroundPath; CString m_sDelayedScreen; CString m_sSystemMessage; vector m_vPreparedScreens;