LuaConsole - have a RequiredService of IEmulator and pass it into the lua implementation instead of using Global.Emulator

This commit is contained in:
adelikat 2016-12-06 10:35:11 -06:00
parent d38b5396c3
commit 3bfce81eae
3 changed files with 12 additions and 9 deletions

View File

@ -44,7 +44,7 @@ namespace BizHawk.Client.EmuHawk
get { return (GuiLuaLibrary)Libraries[typeof(GuiLuaLibrary)]; }
}
public EmuLuaLibrary(LuaConsole passed)
public EmuLuaLibrary(LuaConsole passed, IEmulatorServiceProvider serviceProvider)
: this()
{
LuaWait = new AutoResetEvent(false);
@ -57,7 +57,7 @@ namespace BizHawk.Client.EmuHawk
.GetTypes()
.Where(t => typeof(LuaLibraryBase).IsAssignableFrom(t))
.Where(t => t.IsSealed)
.Where(t => ServiceInjector.IsAvailable(Global.Emulator.ServiceProvider, t))
.Where(t => ServiceInjector.IsAvailable(serviceProvider, t))
.ToList();
libs.AddRange(
@ -66,7 +66,7 @@ namespace BizHawk.Client.EmuHawk
.GetTypes()
.Where(t => typeof(LuaLibraryBase).IsAssignableFrom(t))
.Where(t => t.IsSealed)
.Where(t => ServiceInjector.IsAvailable(Global.Emulator.ServiceProvider, t))
.Where(t => ServiceInjector.IsAvailable(serviceProvider, t))
);
foreach (var lib in libs)
@ -83,7 +83,7 @@ namespace BizHawk.Client.EmuHawk
var instance = (LuaLibraryBase)Activator.CreateInstance(lib, _lua);
instance.LuaRegister(lib, Docs);
instance.LogOutputCallback = ConsoleLuaLibrary.LogOutput;
ServiceInjector.UpdateServices(Global.Emulator.ServiceProvider, instance);
ServiceInjector.UpdateServices(serviceProvider, instance);
Libraries.Add(lib, instance);
}
}
@ -94,11 +94,11 @@ namespace BizHawk.Client.EmuHawk
EmulatorLuaLibrary.YieldCallback = EmuYield;
}
public void Restart()
public void Restart(IEmulatorServiceProvider newServiceProvider)
{
foreach (var lib in Libraries)
{
ServiceInjector.UpdateServices(Global.Emulator.ServiceProvider, lib.Value);
ServiceInjector.UpdateServices(newServiceProvider, lib.Value);
}
}

View File

@ -7,6 +7,7 @@ using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using BizHawk.Emulation.Common;
using BizHawk.Client.Common;
using BizHawk.Client.EmuHawk.WinFormExtensions;
using BizHawk.Client.EmuHawk.ToolExtensions;
@ -15,6 +16,9 @@ namespace BizHawk.Client.EmuHawk
{
public partial class LuaConsole : ToolFormBase, IToolFormAutoConfig
{
[RequiredService]
private IEmulator Emulator { get; set; }
private readonly LuaFileList _luaList;
private bool _sortReverse;
private string _lastColumnSorted;
@ -139,7 +143,7 @@ namespace BizHawk.Client.EmuHawk
// Even if the lua console is self-rebooting from client.reboot_core() we still want to re-inject dependencies
if (IsRebootingCore)
{
LuaImp.Restart();
LuaImp.Restart(Emulator.ServiceProvider);
return;
}
@ -164,7 +168,7 @@ namespace BizHawk.Client.EmuHawk
file.Stop();
}
LuaImp = new EmuLuaLibrary(this);
LuaImp = new EmuLuaLibrary(this, Emulator.ServiceProvider);
InputBox.AutoCompleteCustomSource.AddRange(LuaImp.Docs.Select(a => a.Library + "." + a.Name).ToArray());
foreach (var file in runningScripts)

View File

@ -145,7 +145,6 @@ namespace BizHawk.Client.EmuHawk
private TasBranch CreateBranch()
{
// TODO: don't use Global.Emulator
return new TasBranch
{
Frame = Tastudio.Emulator.Frame,