Răsfoiți Sursa

Avoid initializing single-joycon layouts with handheld controller

Zach Hilman 8 ani în urmă
părinte
comite
50153a1cb2
2 a modificat fișierele cu 5 adăugiri și 1 ștergeri
  1. 4 1
      src/core/hle/service/hid/hid.cpp
  2. 1 0
      src/core/hle/service/hid/hid.h

+ 4 - 1
src/core/hle/service/hid/hid.cpp

@@ -83,7 +83,10 @@ private:
         controller_header.left_color_buttons = JOYCON_BUTTONS_NEON_BLUE;
         controller_header.left_color_buttons = JOYCON_BUTTONS_NEON_BLUE;
 
 
         for (size_t controller = 0; controller < mem.controllers.size(); controller++) {
         for (size_t controller = 0; controller < mem.controllers.size(); controller++) {
-            for (int index = 0; index < HID_NUM_LAYOUTS; index++) {
+            for (int index = 0;
+                 index <
+                 (controller != Controller_Handheld ? HID_NUM_LAYOUTS : HID_NUM_LAYOUTS_HANDHELD);
+                 index++) {
                 ControllerLayout& layout = mem.controllers[controller].layouts[index];
                 ControllerLayout& layout = mem.controllers[controller].layouts[index];
                 layout.header.num_entries = HID_NUM_ENTRIES;
                 layout.header.num_entries = HID_NUM_ENTRIES;
                 layout.header.max_entry_index = HID_NUM_ENTRIES - 1;
                 layout.header.max_entry_index = HID_NUM_ENTRIES - 1;

+ 1 - 0
src/core/hle/service/hid/hid.h

@@ -13,6 +13,7 @@ namespace Service::HID {
 
 
 constexpr u32 HID_NUM_ENTRIES = 17;
 constexpr u32 HID_NUM_ENTRIES = 17;
 constexpr u32 HID_NUM_LAYOUTS = 7;
 constexpr u32 HID_NUM_LAYOUTS = 7;
+constexpr u32 HID_NUM_LAYOUTS_HANDHELD = 2;
 constexpr s32 HID_JOYSTICK_MAX = 0x8000;
 constexpr s32 HID_JOYSTICK_MAX = 0x8000;
 constexpr s32 HID_JOYSTICK_MIN = -0x8000;
 constexpr s32 HID_JOYSTICK_MIN = -0x8000;