diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index d3ad64d352..c9d6d51731 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -18,6 +18,7 @@ #include "GameState.h" #include "GameDef.h" #include "IniFile.h" +#include "RageTimer.h" ThemeManager* THEME = NULL; // global object accessable from anywhere in the program @@ -31,9 +32,9 @@ ThemeManager::ThemeManager() m_pIniMetrics = new IniFile; /* Update the metric cache on the first call to GetMetric. */ - m_uNextReloadTicks = 0; + m_fNextReloadTicks = 0; - m_sCurThemeName = BASE_THEME_NAME; // Use te base theme for now. It's up to PrefsManager to change this. + m_sCurThemeName = BASE_THEME_NAME; // Use the base theme for now. It's up to PrefsManager to change this. CStringArray arrayThemeNames; GetAllThemeNames( arrayThemeNames ); @@ -233,9 +234,10 @@ try_metric_again: CString sDefaultMetricPath = GetMetricsPathFromName(BASE_THEME_NAME); // Is our metric cache out of date? - if (m_uNextReloadTicks == 0 || ::GetTickCount() > m_uNextReloadTicks) + // XXX: GTSS wraps every ~40 days. Need a better way to handler timers like this. + if (TIMER->GetTimeSinceStart() >= m_fNextReloadTicks) { - m_uNextReloadTicks = GetTickCount()+1000; + m_fNextReloadTicks = TIMER->GetTimeSinceStart()+1.0f; if( m_uHashForCurThemeMetrics != GetHashForFile(sCurMetricPath) || m_uHashForBaseThemeMetrics != GetHashForFile(sDefaultMetricPath) ) { diff --git a/stepmania/src/ThemeManager.h b/stepmania/src/ThemeManager.h index cfd710f5d0..aaae711876 100644 --- a/stepmania/src/ThemeManager.h +++ b/stepmania/src/ThemeManager.h @@ -45,7 +45,7 @@ protected: CString m_sCurThemeName; IniFile* m_pIniMetrics; // make this a pointer so we don't have to include IniFile in this header! - DWORD m_uNextReloadTicks; + float m_fNextReloadTicks; unsigned m_uHashForCurThemeMetrics; unsigned m_uHashForBaseThemeMetrics; };