diff --git a/BizHawk.Client.Common/lua/LuaFile.cs b/BizHawk.Client.Common/lua/LuaFile.cs index c626c4cd269..24f1b844c3e 100644 --- a/BizHawk.Client.Common/lua/LuaFile.cs +++ b/BizHawk.Client.Common/lua/LuaFile.cs @@ -49,6 +49,7 @@ public enum RunState public void Stop() { State = RunState.Disabled; + Thread.GetTable("keepalives")[Thread] = null; Thread = null; } diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.cs index 80912fa5d1f..8fdd16490ad 100644 --- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.cs +++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.cs @@ -23,6 +23,7 @@ public class EmuLuaLibrary public EmuLuaLibrary() { Docs = new LuaDocumentation(); + _lua["keepalives"] = _lua.NewTable(); } private FormsLuaLibrary FormsLibrary @@ -172,14 +173,16 @@ public Lua SpawnCoroutine(string file) var content = File.ReadAllText(file); var main = lua.LoadString(content, "main"); lua.Push(main); // push main function on to stack for subsequent resuming + _lua.GetTable("keepalives")[lua] = 1; + _lua.Pop(); return lua; } public void ExecuteString(string command) { _currThread = _lua.NewThread(); - _currThread.DoString(command); + _lua.Pop(); } public ResumeResult ResumeScript(Lua script)