From ed6aa8b02ef7a01ee6641281f607ee85691584b6 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Mon, 24 Jan 2005 03:05:37 +0000 Subject: [PATCH] The Lua state needs to be reset on a theme change to reload scripts --- stepmania/src/LuaManager.cpp | 4 ++-- stepmania/src/LuaManager.h | 2 +- stepmania/src/ThemeManager.cpp | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/stepmania/src/LuaManager.cpp b/stepmania/src/LuaManager.cpp index 81f9b0d0ad..6ec627a312 100644 --- a/stepmania/src/LuaManager.cpp +++ b/stepmania/src/LuaManager.cpp @@ -147,7 +147,7 @@ LuaManager::LuaManager() RageException::Throw("%s", jbuf_error.c_str()); L = NULL; - Init(); + ResetState(); } LuaManager::~LuaManager() @@ -155,7 +155,7 @@ LuaManager::~LuaManager() lua_close( L ); } -void LuaManager::Init() +void LuaManager::ResetState() { if( L != NULL ) lua_close( L ); diff --git a/stepmania/src/LuaManager.h b/stepmania/src/LuaManager.h index 674c0b82bf..acecb1308b 100644 --- a/stepmania/src/LuaManager.h +++ b/stepmania/src/LuaManager.h @@ -19,7 +19,7 @@ public: bool RunScriptFile( const CString &sFile ); /* Reset the environment, freeing any globals left over by previously executed scripts. */ - void Init(); + void ResetState(); /* Run a complete script in the global environment, which returns no value. */ bool RunScript( const CString &sScript ); diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index e05d24ceb8..c0bbd050f7 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -276,6 +276,8 @@ void ThemeManager::SwitchThemeAndLanguage( const CString &sThemeName, const CStr void ThemeManager::UpdateLuaGlobals() { + LUA->ResetState(); + /* Important: explicitly refresh cached metrics that we use. */ THEME_SCREEN_WIDTH.Read(); THEME_SCREEN_HEIGHT.Read();