From 2d1cd1de5056f0d23e510f277177cf8fabf0d043 Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Sun, 11 Feb 2007 01:19:30 +0000 Subject: [PATCH] When changing resolutions, SwitchThemeAndLanguage was being called after clearing all subscribes but STAL wasn't reloading them because nothing had changed. Reload them explicitly if the theme doesn't change. I'm not sure what the rationale behind taking this code path for changing the resolution as it seems to have nothing to do with the theme. --- stepmania/src/GameLoop.cpp | 3 ++- stepmania/src/ThemeManager.cpp | 5 +++-- stepmania/src/ThemeManager.h | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/stepmania/src/GameLoop.cpp b/stepmania/src/GameLoop.cpp index 7a2912fc63..608f2b128f 100644 --- a/stepmania/src/GameLoop.cpp +++ b/stepmania/src/GameLoop.cpp @@ -135,7 +135,8 @@ namespace /* In case the previous theme overloaded class bindings, reinitialize them. */ LUA->RegisterTypes(); - THEME->SwitchThemeAndLanguage( g_sNewTheme, THEME->GetCurLanguage(), PREFSMAN->m_bPseudoLocalize ); + if( !THEME->SwitchThemeAndLanguage( g_sNewTheme, THEME->GetCurLanguage(), PREFSMAN->m_bPseudoLocalize ) ) + THEME->ReloadSubscribers(); PREFSMAN->m_sTheme.Set( g_sNewTheme ); /* Apply the new window title, icon and aspect ratio. */ diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 58346f1e97..77aa2efe28 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -345,7 +345,7 @@ RString ThemeManager::GetDefaultLanguage() return sLangCode; } -void ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RString &sLanguage_, bool bPseudoLocalize ) +bool ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RString &sLanguage_, bool bPseudoLocalize ) { RString sThemeName = sThemeName_; RString sLanguage = sLanguage_; @@ -367,7 +367,7 @@ void ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RSt bool bNothingChanging = sThemeName == m_sCurThemeName && sLanguage == m_sCurLanguage && m_bPseudoLocalize == bPseudoLocalize; if( bNothingChanging ) - return; + return false; m_bPseudoLocalize = bPseudoLocalize; @@ -397,6 +397,7 @@ void ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RSt LocalizedString::RegisterLocalizer( LocalizedStringImplThemeMetric::Create ); ReloadSubscribers(); + return true; } void ThemeManager::ReloadSubscribers() diff --git a/stepmania/src/ThemeManager.h b/stepmania/src/ThemeManager.h index dcc91aff4e..55523562ab 100644 --- a/stepmania/src/ThemeManager.h +++ b/stepmania/src/ThemeManager.h @@ -41,7 +41,8 @@ public: RString GetThemeDisplayName( const RString &sThemeName ); void GetLanguages( vector& AddTo ); bool DoesLanguageExist( const RString &sLanguage ); - void SwitchThemeAndLanguage( const RString &sThemeName, const RString &sLanguage, bool bPseudoLocalize ); + // Return false if nothing changed. + bool SwitchThemeAndLanguage( const RString &sThemeName, const RString &sLanguage, bool bPseudoLocalize ); void UpdateLuaGlobals(); RString GetCurThemeName() const { return m_sCurThemeName; }; bool IsThemeLoaded() const { return !m_sCurThemeName.empty(); };