From a46086fdda9e748f84613e4e5ffa6be9fcfb8bd0 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 1 Nov 2005 19:15:26 +0000 Subject: [PATCH] Avoid extra work when changing the language and not the theme. --- stepmania/src/ThemeManager.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 25303616ba..30cd112af5 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -254,21 +254,26 @@ void ThemeManager::SwitchThemeAndLanguage( const CString &sThemeName_, const CSt if( sThemeName == m_sCurThemeName && sLanguage == m_sCurLanguage ) return; - // clear theme path cache - for( int i = 0; i < NUM_ElementCategory; ++i ) - g_ThemePathCache[i].clear(); - - // load current theme + // Load theme metrics. If only the language is changing, this is all + // we need to reload. + bool bThemeChanging = (sThemeName != m_sCurThemeName); LoadThemeMetrics( g_vThemes, sThemeName, sLanguage ); - // reload common sounds - if ( SCREENMAN != NULL ) - SCREENMAN->ThemeChanged(); + if( bThemeChanging ) + { + // clear theme path cache + for( int i = 0; i < NUM_ElementCategory; ++i ) + g_ThemePathCache[i].clear(); - /* Lua globals can use metrics which are cached, and vice versa. Update Lua - * globals first; it's Lua's job to explicitly update cached metrics that it - * uses. */ - UpdateLuaGlobals(); + // reload common sounds + if( SCREENMAN != NULL ) + SCREENMAN->ThemeChanged(); + + /* Lua globals can use metrics which are cached, and vice versa. Update Lua + * globals first; it's Lua's job to explicitly update cached metrics that it + * uses. */ + UpdateLuaGlobals(); + } // reload subscribers FOREACHS_CONST( IThemeMetric*, *SubscriptionManager::s_pSubscribers, p )