瀏覽代碼

Treat NpadIdType < 0 as invalid. Filter invalid SupportedPlayers inside IHidServer.SetSupportedNpadIdType(). (#4377)

Co-authored-by: Logan Stromberg <lostromb@microsoft.com>
Logan Stromberg 3 年之前
父節點
當前提交
1dcd44b94f
共有 2 個文件被更改,包括 5 次插入3 次删除
  1. 3 1
      Ryujinx.HLE/HOS/Services/Hid/HidServer/HidUtils.cs
  2. 2 2
      Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs

+ 3 - 1
Ryujinx.HLE/HOS/Services/Hid/HidServer/HidUtils.cs

@@ -38,7 +38,9 @@ namespace Ryujinx.HLE.HOS.Services.Hid.HidServer
 
 
         public static bool IsValidNpadIdType(NpadIdType npadIdType)
         public static bool IsValidNpadIdType(NpadIdType npadIdType)
         {
         {
-            return npadIdType <= NpadIdType.Player8 || npadIdType == NpadIdType.Handheld || npadIdType == NpadIdType.Unknown;
+            return (npadIdType >= NpadIdType.Player1 && npadIdType <= NpadIdType.Player8) ||
+                npadIdType == NpadIdType.Handheld ||
+                npadIdType == NpadIdType.Unknown;
         }
         }
     }
     }
 }
 }

+ 2 - 2
Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs

@@ -722,7 +722,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid
 
 
             for (int i = 0; i < supportedPlayerIds.Length; ++i)
             for (int i = 0; i < supportedPlayerIds.Length; ++i)
             {
             {
-                if (supportedPlayerIds[i] >= 0)
+                if (HidUtils.IsValidNpadIdType(supportedPlayerIds[i]))
                 {
                 {
                     context.Device.Hid.Npads.SetSupportedPlayer(HidUtils.GetIndexFromNpadIdType(supportedPlayerIds[i]));
                     context.Device.Hid.Npads.SetSupportedPlayer(HidUtils.GetIndexFromNpadIdType(supportedPlayerIds[i]));
                 }
                 }
@@ -1101,7 +1101,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid
 
 
             if (deviceType < NpadStyleIndex.System || deviceType >= NpadStyleIndex.FullKey)
             if (deviceType < NpadStyleIndex.System || deviceType >= NpadStyleIndex.FullKey)
             {
             {
-                if (npadIdType >= (NpadIdType.Player8 + 1) && npadIdType != NpadIdType.Handheld && npadIdType != NpadIdType.Unknown)
+                if (!HidUtils.IsValidNpadIdType(npadIdType))
                 {
                 {
                     return ResultCode.InvalidNpadIdType;
                     return ResultCode.InvalidNpadIdType;
                 }
                 }