diff options
author | bunnei <bunneidev@gmail.com> | 2019-10-23 01:51:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-23 01:51:24 +0200 |
commit | 6fe89acf0d4d0ba3126b596a74f10b56b0591627 (patch) | |
tree | 5423cf457c92e26a97f23af9b70fb0bdcf488b27 /src/core | |
parent | Merge pull request #2995 from ReinUsesLisp/ignore-gmem (diff) | |
parent | hid/npad: Fix incorrect connection boolean value in ConnectAllDisconnectedControllers() (diff) | |
download | yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.tar yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.tar.gz yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.tar.bz2 yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.tar.lz yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.tar.xz yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.tar.zst yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.zip |
Diffstat (limited to 'src/core')
-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; }; |