diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs
index 79b1001f97..47d977a3bf 100644
--- a/src/BizHawk.Client.EmuHawk/MainForm.cs
+++ b/src/BizHawk.Client.EmuHawk/MainForm.cs
@@ -273,13 +273,13 @@ namespace BizHawk.Client.EmuHawk
CloseRomContextMenuItem.Image = Properties.Resources.Close;
}
- public MainForm(string[] args)
+ public MainForm(Config config, string[] args)
{
//do this threaded stuff early so it has plenty of time to run in background
Database.InitializeDatabase(Path.Combine(PathUtils.ExeDirectoryPath, "gamedb", "gamedb.txt"));
BootGodDb.Initialize(Path.Combine(PathUtils.ExeDirectoryPath, "gamedb"));
- base.Config = Config;
+ _config = config; // skips assignment to GlobalWin.Config as Program already did that
InputManager.ControllerInputCoalescer = new ControllerInputCoalescer();
FirmwareManager = new FirmwareManager();
@@ -850,10 +850,13 @@ namespace BizHawk.Client.EmuHawk
private ISoundProvider _currentSoundProvider = new NullSound(44100 / 60); // Reasonable default until we have a core instance
+ /// don't use this, use
+ private Config _config;
+
private new Config Config
{
- get => GlobalWin.Config;
- set => GlobalWin.Config = base.Config = value;
+ get => _config;
+ set => GlobalWin.Config = base.Config = _config = value;
}
public readonly ToolManager Tools;
@@ -2784,6 +2787,7 @@ namespace BizHawk.Client.EmuHawk
Config.ResolveDefaults();
InitControls(); // rebind hotkeys
InputManager.SyncControls(Emulator, MovieSession, Config);
+ Tools.Restart(Config, Emulator, Game);
AddOnScreenMessage($"Config file loaded: {iniPath}");
}
@@ -3742,7 +3746,7 @@ namespace BizHawk.Client.EmuHawk
}
}
- Tools.Restart(Emulator, Game);
+ Tools.Restart(Config, Emulator, Game);
if (Config.Cheats.LoadFileByGame && Emulator.HasMemoryDomains())
{
@@ -3906,7 +3910,7 @@ namespace BizHawk.Client.EmuHawk
Emulator = new NullEmulator();
EmuClient.Game = GlobalWin.Game = GameInfo.NullInstance;
CreateRewinder();
- Tools.Restart(Emulator, Game);
+ Tools.Restart(Config, Emulator, Game);
RewireSound();
ClearHolds();
InputManager.SyncControls(Emulator, MovieSession, Config);
diff --git a/src/BizHawk.Client.EmuHawk/Program.cs b/src/BizHawk.Client.EmuHawk/Program.cs
index 8ffbc913a7..354c014524 100644
--- a/src/BizHawk.Client.EmuHawk/Program.cs
+++ b/src/BizHawk.Client.EmuHawk/Program.cs
@@ -220,7 +220,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
- var mf = new MainForm(args);
+ var mf = new MainForm(GlobalWin.Config, args);
// var title = mf.Text;
mf.Show();
// mf.Text = title;
@@ -346,7 +346,7 @@ namespace BizHawk.Client.EmuHawk
protected override void OnCreateMainForm()
{
- MainForm = new MainForm(cmdArgs);
+ MainForm = new MainForm(GlobalWin.Config, cmdArgs);
var title = MainForm.Text;
MainForm.Show();
MainForm.Text = title;
diff --git a/src/BizHawk.Client.EmuHawk/tools/ToolManager.cs b/src/BizHawk.Client.EmuHawk/tools/ToolManager.cs
index fe0c53a3f0..7386943800 100644
--- a/src/BizHawk.Client.EmuHawk/tools/ToolManager.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/ToolManager.cs
@@ -19,7 +19,7 @@ namespace BizHawk.Client.EmuHawk
public class ToolManager
{
private readonly MainForm _owner;
- private readonly Config _config;
+ private Config _config;
private readonly DisplayManager _displayManager;
private readonly InputManager _inputManager;
private IExternalApiProvider _apiProvider;
@@ -83,16 +83,17 @@ namespace BizHawk.Client.EmuHawk
// If the form inherits ToolFormBase, it will set base properties such as Tools, Config, etc
private void SetBaseProperties(IToolForm form)
{
- if (form is ToolFormBase tool)
- {
- tool.Tools = this;
- tool.Config = _config;
- tool.DisplayManager = _displayManager;
- tool.InputManager = _inputManager;
- tool.MainForm = _owner;
- tool.MovieSession = _movieSession;
- tool.Game = _game;
- }
+ if (!(form is FormBase f)) return;
+
+ f.Config = _config;
+ if (!(form is ToolFormBase tool)) return;
+
+ tool.Tools = this;
+ tool.DisplayManager = _displayManager;
+ tool.InputManager = _inputManager;
+ tool.MainForm = _owner;
+ tool.MovieSession = _movieSession;
+ tool.Game = _game;
}
///
@@ -505,8 +506,9 @@ namespace BizHawk.Client.EmuHawk
}
}
- public void Restart(IEmulator emulator, IGameInfo game)
+ public void Restart(Config config, IEmulator emulator, IGameInfo game)
{
+ _config = config;
_emulator = emulator;
_game = game;
ApiProvider = ApiManager.Restart(_emulator.ServiceProvider, _owner, _displayManager, _inputManager, _movieSession, this, _config, _emulator, _game);