From 3403ecacb756226fb119e1245ff46812c68fddb4 Mon Sep 17 00:00:00 2001 From: zeromus Date: Thu, 23 Apr 2020 20:35:04 -0400 Subject: [PATCH] fix race condition between OTK_Gamepad initialize and EnumerateDevices() from input thread --- BizHawk.Client.EmuHawk/Input/OTK_Gamepad.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/BizHawk.Client.EmuHawk/Input/OTK_Gamepad.cs b/BizHawk.Client.EmuHawk/Input/OTK_Gamepad.cs index 91106be46a..5c800a5874 100644 --- a/BizHawk.Client.EmuHawk/Input/OTK_Gamepad.cs +++ b/BizHawk.Client.EmuHawk/Input/OTK_Gamepad.cs @@ -24,6 +24,8 @@ namespace BizHawk.Client.EmuHawk private static readonly List Devices = new List(); + volatile static bool initialized = false; + /// Initialization is only called once when MainForm loads public static void Initialize() { @@ -37,13 +39,16 @@ namespace BizHawk.Client.EmuHawk Devices.Add(new OTK_GamePad(i, ++playerCount)); } } + initialized = true; } public static IEnumerable EnumerateDevices() { lock (_syncObj) { - foreach (var device in Devices) yield return device; + if (initialized) + foreach (var device in Devices) yield return device; + } }