diff options
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 64 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.h | 10 | 
2 files changed, 23 insertions, 51 deletions
| diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index a2b25a796..81bd2f3cb 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp @@ -583,36 +583,6 @@ bool Controller_NPad::SwapNpadAssignment(u32 npad_id_1, u32 npad_id_2) {      return true;  } -bool Controller_NPad::IsControllerSupported(NPadControllerType controller) { -    if (controller == NPadControllerType::Handheld) { -        // Handheld is not even a supported type, lets stop here -        if (std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), -                      NPAD_HANDHELD) == supported_npad_id_types.end()) { -            return false; -        } -        // Handheld should not be supported in docked mode -        if (Settings::values.use_docked_mode) { -            return false; -        } -    } -    switch (controller) { -    case NPadControllerType::ProController: -        return style.pro_controller; -    case NPadControllerType::Handheld: -        return style.handheld; -    case NPadControllerType::JoyDual: -        return style.joycon_dual; -    case NPadControllerType::JoyLeft: -        return style.joycon_left; -    case NPadControllerType::JoyRight: -        return style.joycon_right; -    case NPadControllerType::Pokeball: -        return style.pokeball; -    default: -        return false; -    } -} -  Controller_NPad::LedPattern Controller_NPad::GetLedPattern(u32 npad_id) {      if (npad_id == npad_id_list.back() || npad_id == npad_id_list[npad_id_list.size() - 2]) {          // These are controllers without led patterns @@ -659,25 +629,24 @@ void Controller_NPad::ClearAllConnectedControllers() {  }  void Controller_NPad::DisconnectAllConnectedControllers() { -    std::for_each(connected_controllers.begin(), connected_controllers.end(), -                  [](ControllerHolder& controller) { controller.is_connected = false; }); +    for (ControllerHolder& controller : connected_controllers) { +        controller.is_connected = false; +    }  }  void Controller_NPad::ConnectAllDisconnectedControllers() { -    std::for_each(connected_controllers.begin(), connected_controllers.end(), -                  [](ControllerHolder& controller) { -                      if (controller.type != NPadControllerType::None && !controller.is_connected) { -                          controller.is_connected = false; -                      } -                  }); +    for (ControllerHolder& controller : connected_controllers) { +        if (controller.type != NPadControllerType::None && !controller.is_connected) { +            controller.is_connected = true; +        } +    }  }  void Controller_NPad::ClearAllControllers() { -    std::for_each(connected_controllers.begin(), connected_controllers.end(), -                  [](ControllerHolder& controller) { -                      controller.type = NPadControllerType::None; -                      controller.is_connected = false; -                  }); +    for (ControllerHolder& controller : connected_controllers) { +        controller.type = NPadControllerType::None; +        controller.is_connected = false; +    }  }  u32 Controller_NPad::GetAndResetPressState() { @@ -685,10 +654,10 @@ u32 Controller_NPad::GetAndResetPressState() {  }  bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const { -    const bool support_handheld = -        std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), NPAD_HANDHELD) != -        supported_npad_id_types.end();      if (controller == NPadControllerType::Handheld) { +        const bool support_handheld = +            std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), +                      NPAD_HANDHELD) != supported_npad_id_types.end();          // Handheld is not even a supported type, lets stop here          if (!support_handheld) {              return false; @@ -700,6 +669,7 @@ bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const          return true;      } +      if (std::any_of(supported_npad_id_types.begin(), supported_npad_id_types.end(),                      [](u32 npad_id) { return npad_id <= MAX_NPAD_ID; })) {          switch (controller) { @@ -717,6 +687,7 @@ bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const              return false;          }      } +      return false;  } @@ -795,6 +766,7 @@ Controller_NPad::NPadControllerType Controller_NPad::DecideBestController(          priority_list.push_back(NPadControllerType::JoyLeft);          priority_list.push_back(NPadControllerType::JoyRight);          priority_list.push_back(NPadControllerType::JoyDual); +        break;      }      const auto iter = std::find_if(priority_list.begin(), priority_list.end(), diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index 1bc3d55d6..16c4caa1f 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h @@ -301,6 +301,11 @@ private:          bool is_connected;      }; +    void InitNewlyAddedControler(std::size_t controller_idx); +    bool IsControllerSupported(NPadControllerType controller) const; +    NPadControllerType DecideBestController(NPadControllerType priority) const; +    void RequestPadStateUpdate(u32 npad_id); +      u32 press_state{};      NPadType style{}; @@ -321,12 +326,7 @@ private:      std::array<ControllerHolder, 10> connected_controllers{};      bool can_controllers_vibrate{true}; -    void InitNewlyAddedControler(std::size_t controller_idx); -    bool IsControllerSupported(NPadControllerType controller) const; -    NPadControllerType DecideBestController(NPadControllerType priority) const; -    void RequestPadStateUpdate(u32 npad_id);      std::array<ControllerPad, 10> npad_pad_states{}; -    bool IsControllerSupported(NPadControllerType controller);      bool is_in_lr_assignment_mode{false};      Core::System& system;  }; | 
