diff --git a/src/BizHawk.Client.EmuHawk/Input/Input.cs b/src/BizHawk.Client.EmuHawk/Input/Input.cs
index aa0a5e01f2..ab539a7d2c 100644
--- a/src/BizHawk.Client.EmuHawk/Input/Input.cs
+++ b/src/BizHawk.Client.EmuHawk/Input/Input.cs
@@ -106,22 +106,28 @@ namespace BizHawk.Client.EmuHawk
Alt = 262144
}
- private static readonly Lazy _instance = new Lazy(() => new Input());
+ private static readonly Lazy _instance = new Lazy(() => new Input(() => GlobalWin.Config));
public static Input Instance => _instance.Value;
private readonly Thread _updateThread;
- public readonly HostInputAdapter Adapter = GlobalWin.Config.HostInputMethod switch
- {
- EHostInputMethod.OpenTK => new OpenTKInputAdapter(),
- EHostInputMethod.DirectInput => new DirectInputAdapter(),
- _ => throw new Exception()
- };
+ public readonly HostInputAdapter Adapter;
- private Input()
+ private readonly Func _getConfigCallback;
+
+ private Input(Func getConfigCallback)
{
- Adapter.UpdateConfig(GlobalWin.Config);
+ _getConfigCallback = getConfigCallback;
+
+ var config = _getConfigCallback();
+ Adapter = config.HostInputMethod switch
+ {
+ EHostInputMethod.OpenTK => new OpenTKInputAdapter(),
+ EHostInputMethod.DirectInput => new DirectInputAdapter(),
+ _ => throw new Exception()
+ };
+ Adapter.UpdateConfig(config);
_updateThread = new Thread(UpdateThreadProc)
{
IsBackground = true,
@@ -377,7 +383,7 @@ namespace BizHawk.Client.EmuHawk
};
while (true)
{
- Adapter.UpdateConfig(GlobalWin.Config);
+ Adapter.UpdateConfig(_getConfigCallback());
var keyEvents = Adapter.ProcessHostKeyboards();
Adapter.PreprocessHostGamepads();