From 2de78a2d55a1306761788570ab192897299c55d8 Mon Sep 17 00:00:00 2001
From: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
Date: Mon, 26 Jun 2023 03:55:25 +0200
Subject: [PATCH] [Ryujinx.Input.SDL2] Address dotnet-format issues (#5385)

* dotnet format style --severity info

Some changes were manually reverted.

* dotnet format analyzers --serverity info

Some changes have been minimally adapted.

* Restore a few unused methods and variables

* Silence dotnet format IDE0052 warnings

* Address dotnet format CA1816 warnings

* Address or silence dotnet format CA1806 and a few CA1854 warnings

* Address most dotnet format whitespace warnings

* Add comments to disabled warnings

* Simplify properties and array initialization, Use const when possible, Remove trailing commas

* Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas"

This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e.

* dotnet format whitespace after rebase

* Add trailing commas, log errors instead of throwing and remove redundant code
---
 src/Ryujinx.Input.SDL2/SDL2Gamepad.cs       | 44 ++++++++++++++-------
 src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs | 11 +++---
 src/Ryujinx.Input.SDL2/SDL2Keyboard.cs      | 38 +++++++-----------
 src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs |  3 +-
 4 files changed, 52 insertions(+), 44 deletions(-)

diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs
index 6a8c1204fa..f04fdeb3c7 100644
--- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs
+++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs
@@ -57,13 +57,13 @@ namespace Ryujinx.Input.SDL2
 
         private readonly object _userMappingLock = new();
 
-        private List<ButtonMappingEntry> _buttonsUserMapping;
+        private readonly List<ButtonMappingEntry> _buttonsUserMapping;
 
-        private StickInputId[] _stickUserMapping = new StickInputId[(int)StickInputId.Count]
+        private readonly StickInputId[] _stickUserMapping = new StickInputId[(int)StickInputId.Count]
         {
             StickInputId.Unbound,
             StickInputId.Left,
-            StickInputId.Right
+            StickInputId.Right,
         };
 
         public GamepadFeaturesFlag Features { get; }
@@ -85,8 +85,15 @@ namespace Ryujinx.Input.SDL2
             // Enable motion tracking
             if (Features.HasFlag(GamepadFeaturesFlag.Motion))
             {
-                SDL_GameControllerSetSensorEnabled(_gamepadHandle, SDL_SensorType.SDL_SENSOR_ACCEL, SDL_bool.SDL_TRUE);
-                SDL_GameControllerSetSensorEnabled(_gamepadHandle, SDL_SensorType.SDL_SENSOR_GYRO, SDL_bool.SDL_TRUE);
+                if (SDL_GameControllerSetSensorEnabled(_gamepadHandle, SDL_SensorType.SDL_SENSOR_ACCEL, SDL_bool.SDL_TRUE) != 0)
+                {
+                    Logger.Error?.Print(LogClass.Hid, $"Could not enable data reporting for SensorType {SDL_SensorType.SDL_SENSOR_ACCEL}.");
+                }
+
+                if (SDL_GameControllerSetSensorEnabled(_gamepadHandle, SDL_SensorType.SDL_SENSOR_GYRO, SDL_bool.SDL_TRUE) != 0)
+                {
+                    Logger.Error?.Print(LogClass.Hid, $"Could not enable data reporting for SensorType {SDL_SensorType.SDL_SENSOR_GYRO}.");
+                }
             }
         }
 
@@ -144,7 +151,10 @@ namespace Ryujinx.Input.SDL2
 
                 if (durationMs == uint.MaxValue)
                 {
-                    SDL_GameControllerRumble(_gamepadHandle, lowFrequencyRaw, highFrequencyRaw, SDL_HAPTIC_INFINITY);
+                    if (SDL_GameControllerRumble(_gamepadHandle, lowFrequencyRaw, highFrequencyRaw, SDL_HAPTIC_INFINITY) != 0)
+                    {
+                        Logger.Error?.Print(LogClass.Hid, "Rumble is not supported on this game controller.");
+                    }
                 }
                 else if (durationMs > SDL_HAPTIC_INFINITY)
                 {
@@ -152,7 +162,10 @@ namespace Ryujinx.Input.SDL2
                 }
                 else
                 {
-                    SDL_GameControllerRumble(_gamepadHandle, lowFrequencyRaw, highFrequencyRaw, durationMs);
+                    if (SDL_GameControllerRumble(_gamepadHandle, lowFrequencyRaw, highFrequencyRaw, durationMs) != 0)
+                    {
+                        Logger.Error?.Print(LogClass.Hid, "Rumble is not supported on this game controller.");
+                    }
                 }
             }
         }
@@ -182,13 +195,14 @@ namespace Ryujinx.Input.SDL2
 
                     if (result == 0)
                     {
-                        Vector3 value = new Vector3(values[0], values[1], values[2]);
+                        Vector3 value = new(values[0], values[1], values[2]);
 
                         if (inputId == MotionInputId.Gyroscope)
                         {
                             return RadToDegree(value);
                         }
-                        else if (inputId == MotionInputId.Accelerometer)
+
+                        if (inputId == MotionInputId.Accelerometer)
                         {
                             return GsToMs2(value);
                         }
@@ -359,18 +373,18 @@ namespace Ryujinx.Input.SDL2
             {
                 return ConvertRawStickValue(SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT)) > _triggerThreshold;
             }
-            else if (inputId == GamepadButtonInputId.RightTrigger)
+
+            if (inputId == GamepadButtonInputId.RightTrigger)
             {
                 return ConvertRawStickValue(SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT)) > _triggerThreshold;
             }
-            else if (_buttonsDriverMapping[(int)inputId] == SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_INVALID)
+
+            if (_buttonsDriverMapping[(int)inputId] == SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_INVALID)
             {
                 return false;
             }
-            else
-            {
-                return SDL_GameControllerGetButton(_gamepadHandle, _buttonsDriverMapping[(int)inputId]) == 1;
-            }
+
+            return SDL_GameControllerGetButton(_gamepadHandle, _buttonsDriverMapping[(int)inputId]) == 1;
         }
     }
 }
diff --git a/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs b/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs
index d4086a1050..d0e793de4f 100644
--- a/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs
+++ b/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs
@@ -7,8 +7,8 @@ namespace Ryujinx.Input.SDL2
 {
     public class SDL2GamepadDriver : IGamepadDriver
     {
-        private Dictionary<int, string> _gamepadsInstanceIdsMapping;
-        private List<string> _gamepadsIds;
+        private readonly Dictionary<int, string> _gamepadsInstanceIdsMapping;
+        private readonly List<string> _gamepadsIds;
 
         public ReadOnlySpan<string> GamepadsIds => _gamepadsIds.ToArray();
 
@@ -35,7 +35,7 @@ namespace Ryujinx.Input.SDL2
             }
         }
 
-        private string GenerateGamepadId(int joystickIndex)
+        private static string GenerateGamepadId(int joystickIndex)
         {
             Guid guid = SDL_JoystickGetDeviceGUID(joystickIndex);
 
@@ -44,10 +44,10 @@ namespace Ryujinx.Input.SDL2
                 return null;
             }
 
-            return joystickIndex + "-" + guid.ToString();
+            return joystickIndex + "-" + guid;
         }
 
-        private int GetJoystickIndexByGamepadId(string id)
+        private static int GetJoystickIndexByGamepadId(string id)
         {
             string[] data = id.Split("-");
 
@@ -118,6 +118,7 @@ namespace Ryujinx.Input.SDL2
 
         public void Dispose()
         {
+            GC.SuppressFinalize(this);
             Dispose(true);
         }
 
diff --git a/src/Ryujinx.Input.SDL2/SDL2Keyboard.cs b/src/Ryujinx.Input.SDL2/SDL2Keyboard.cs
index 2fe0614d8c..f46930a8e6 100644
--- a/src/Ryujinx.Input.SDL2/SDL2Keyboard.cs
+++ b/src/Ryujinx.Input.SDL2/SDL2Keyboard.cs
@@ -26,9 +26,11 @@ namespace Ryujinx.Input.SDL2
 
         private readonly object _userMappingLock = new();
 
+#pragma warning disable IDE0052 // Remove unread private member
         private readonly SDL2KeyboardDriver _driver;
+#pragma warning restore IDE0052
         private StandardKeyboardInputConfig _configuration;
-        private List<ButtonMappingEntry> _buttonsUserMapping;
+        private readonly List<ButtonMappingEntry> _buttonsUserMapping;
 
         private static readonly SDL_Keycode[] _keysDriverMapping = new SDL_Keycode[(int)Key.Count]
         {
@@ -208,29 +210,19 @@ namespace Ryujinx.Input.SDL2
 
         private static SDL_Keymod GetKeyboardModifierMask(Key key)
         {
-            switch (key)
+            return key switch
             {
-                case Key.ShiftLeft:
-                    return SDL_Keymod.KMOD_LSHIFT;
-                case Key.ShiftRight:
-                    return SDL_Keymod.KMOD_RSHIFT;
-                case Key.ControlLeft:
-                    return SDL_Keymod.KMOD_LCTRL;
-                case Key.ControlRight:
-                    return SDL_Keymod.KMOD_RCTRL;
-                case Key.AltLeft:
-                    return SDL_Keymod.KMOD_LALT;
-                case Key.AltRight:
-                    return SDL_Keymod.KMOD_RALT;
-                case Key.WinLeft:
-                    return SDL_Keymod.KMOD_LGUI;
-                case Key.WinRight:
-                    return SDL_Keymod.KMOD_RGUI;
+                Key.ShiftLeft => SDL_Keymod.KMOD_LSHIFT,
+                Key.ShiftRight => SDL_Keymod.KMOD_RSHIFT,
+                Key.ControlLeft => SDL_Keymod.KMOD_LCTRL,
+                Key.ControlRight => SDL_Keymod.KMOD_RCTRL,
+                Key.AltLeft => SDL_Keymod.KMOD_LALT,
+                Key.AltRight => SDL_Keymod.KMOD_RALT,
+                Key.WinLeft => SDL_Keymod.KMOD_LGUI,
+                Key.WinRight => SDL_Keymod.KMOD_RGUI,
                 // NOTE: Menu key isn't supported by SDL2.
-                case Key.Menu:
-                default:
-                    return SDL_Keymod.KMOD_NONE;
-            }
+                _ => SDL_Keymod.KMOD_NONE,
+            };
         }
 
         public KeyboardStateSnapshot GetKeyboardStateSnapshot()
@@ -416,4 +408,4 @@ namespace Ryujinx.Input.SDL2
             return Vector3.Zero;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs b/src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs
index e9361c248a..d0268adbbb 100644
--- a/src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs
+++ b/src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs
@@ -38,6 +38,7 @@ namespace Ryujinx.Input.SDL2
 
         public void Dispose()
         {
+            GC.SuppressFinalize(this);
             Dispose(true);
         }
 
@@ -51,4 +52,4 @@ namespace Ryujinx.Input.SDL2
             return new SDL2Keyboard(this, _keyboardIdentifers[0], "All keyboards");
         }
     }
-}
\ No newline at end of file
+}