Просмотр исходного кода

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.
Mary 5 лет назад
Родитель
Сommit
c1cbdd45dc
1 измененных файлов с 13 добавлено и 10 удалено
  1. 13 10
      Ryujinx.Input/HLE/NpadManager.cs

+ 13 - 10
Ryujinx.Input/HLE/NpadManager.cs

@@ -140,6 +140,8 @@ namespace Ryujinx.Input.HLE
                 List<GamepadInput> hleInputStates = new List<GamepadInput>();
                 List<GamepadInput> hleInputStates = new List<GamepadInput>();
                 List<SixAxisInput> hleMotionStates = new List<SixAxisInput>(NpadDevices.MaxControllers);
                 List<SixAxisInput> hleMotionStates = new List<SixAxisInput>(NpadDevices.MaxControllers);
 
 
+                KeyboardInput? hleKeyboardInput = null;
+
                 foreach (InputConfig inputConfig in _inputConfig)
                 foreach (InputConfig inputConfig in _inputConfig)
                 {
                 {
                     GamepadInput inputState = default;
                     GamepadInput inputState = default;
@@ -160,6 +162,11 @@ namespace Ryujinx.Input.HLE
                         inputState.Buttons |= hleHid.UpdateStickButtons(inputState.LStick, inputState.RStick);
                         inputState.Buttons |= hleHid.UpdateStickButtons(inputState.LStick, inputState.RStick);
 
 
                         motionState = controller.GetHLEMotionState();
                         motionState = controller.GetHLEMotionState();
+
+                        if (ConfigurationState.Instance.Hid.EnableKeyboard)
+                        {
+                            hleKeyboardInput = controller.GetHLEKeyboardInput();
+                        }
                     }
                     }
                     else
                     else
                     {
                     {
@@ -172,20 +179,16 @@ namespace Ryujinx.Input.HLE
 
 
                     hleInputStates.Add(inputState);
                     hleInputStates.Add(inputState);
                     hleMotionStates.Add(motionState);
                     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.Update(hleInputStates);
                 hleHid.Npads.UpdateSixAxis(hleMotionStates);
                 hleHid.Npads.UpdateSixAxis(hleMotionStates);
+
+                if (hleKeyboardInput.HasValue)
+                {
+                    hleHid.Keyboard.Update(hleKeyboardInput.Value);
+                }
+
                 tamperMachine.UpdateInput(hleInputStates);
                 tamperMachine.UpdateInput(hleInputStates);
             }
             }
         }
         }