diff --git a/BizHawk.MultiClient/LuaImplementation.cs b/BizHawk.MultiClient/LuaImplementation.cs index 1df35b29be..d9a441b1a8 100644 --- a/BizHawk.MultiClient/LuaImplementation.cs +++ b/BizHawk.MultiClient/LuaImplementation.cs @@ -32,6 +32,7 @@ namespace BizHawk.MultiClient public void Close() { lua.Close(); + LuaWait.Dispose(); } public void LuaRegister(Lua lua) diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 4705b504b6..b4c6f4897b 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -1620,12 +1620,12 @@ namespace BizHawk.MultiClient if (runFrame) { //client input-related duties - if (LuaConsole1.LuaImp.isRunning) + if (LuaConsole1.IsRunning()) { - LuaConsole1.LuaImp.LuaWait.WaitOne(); + LuaConsole1.WaitOne(); } - if (LuaConsole1.LuaImp.isRunning) + if (LuaConsole1.IsRunning()) { Global.MainForm.MainWait.Set(); } diff --git a/BizHawk.MultiClient/tools/LuaConsole.cs b/BizHawk.MultiClient/tools/LuaConsole.cs index a43f7bd60e..3d2ab78674 100644 --- a/BizHawk.MultiClient/tools/LuaConsole.cs +++ b/BizHawk.MultiClient/tools/LuaConsole.cs @@ -646,5 +646,27 @@ namespace BizHawk.MultiClient OpenLuaSession(); } + public bool IsRunning() + { + if (!this.IsHandleCreated || this.IsDisposed) + { + return false; + } + else + { + if (LuaImp.isRunning) + return true; + else + return false; + } + } + + public void WaitOne() + { + if (!this.IsHandleCreated || this.IsDisposed) + return; + + this.LuaImp.LuaWait.WaitOne(); + } } }