From c1cbdd45dc38c58f1208696018b4612b236f38dc Mon Sep 17 00:00:00 2001 From: Mary Date: Wed, 21 Apr 2021 01:47:49 +0200 Subject: [PATCH] Miria: Do not try to query keyboard input when controller isn't set (#2231) This fix a possible crash with raw keyboard input since Miria. I took the liberty to move the the keyboard update to avoid possible duplicate update if we end up having two keyboards in use. --- Ryujinx.Input/HLE/NpadManager.cs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Ryujinx.Input/HLE/NpadManager.cs b/Ryujinx.Input/HLE/NpadManager.cs index fdb87f9b..033a7ac5 100644 --- a/Ryujinx.Input/HLE/NpadManager.cs +++ b/Ryujinx.Input/HLE/NpadManager.cs @@ -140,6 +140,8 @@ namespace Ryujinx.Input.HLE List hleInputStates = new List(); List hleMotionStates = new List(NpadDevices.MaxControllers); + KeyboardInput? hleKeyboardInput = null; + foreach (InputConfig inputConfig in _inputConfig) { GamepadInput inputState = default; @@ -160,6 +162,11 @@ namespace Ryujinx.Input.HLE inputState.Buttons |= hleHid.UpdateStickButtons(inputState.LStick, inputState.RStick); motionState = controller.GetHLEMotionState(); + + if (ConfigurationState.Instance.Hid.EnableKeyboard) + { + hleKeyboardInput = controller.GetHLEKeyboardInput(); + } } else { @@ -172,20 +179,16 @@ namespace Ryujinx.Input.HLE hleInputStates.Add(inputState); hleMotionStates.Add(motionState); - - if (ConfigurationState.Instance.Hid.EnableKeyboard) - { - KeyboardInput? hleKeyboardInput = controller.GetHLEKeyboardInput(); - - if (hleKeyboardInput.HasValue) - { - hleHid.Keyboard.Update(hleKeyboardInput.Value); - } - } } hleHid.Npads.Update(hleInputStates); hleHid.Npads.UpdateSixAxis(hleMotionStates); + + if (hleKeyboardInput.HasValue) + { + hleHid.Keyboard.Update(hleKeyboardInput.Value); + } + tamperMachine.UpdateInput(hleInputStates); } }