diff options
| author | 2019-10-22 19:51:24 -0400 | |
|---|---|---|
| committer | 2019-10-22 19:51:24 -0400 | |
| commit | 6fe89acf0d4d0ba3126b596a74f10b56b0591627 (patch) | |
| tree | 5423cf457c92e26a97f23af9b70fb0bdcf488b27 | |
| parent | Merge pull request #2995 from ReinUsesLisp/ignore-gmem (diff) | |
| parent | hid/npad: Fix incorrect connection boolean value in ConnectAllDisconnectedCon... (diff) | |
| download | yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.tar.gz yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.tar.xz yuzu-6fe89acf0d4d0ba3126b596a74f10b56b0591627.zip | |
Merge pull request #2991 from lioncash/npad
hid/npad: Minor cleanup
| -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) { | |||
| 583 | return true; | 583 | return true; |
| 584 | } | 584 | } |
| 585 | 585 | ||
| 586 | bool Controller_NPad::IsControllerSupported(NPadControllerType controller) { | ||
| 587 | if (controller == NPadControllerType::Handheld) { | ||
| 588 | // Handheld is not even a supported type, lets stop here | ||
| 589 | if (std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), | ||
| 590 | NPAD_HANDHELD) == supported_npad_id_types.end()) { | ||
| 591 | return false; | ||
| 592 | } | ||
| 593 | // Handheld should not be supported in docked mode | ||
| 594 | if (Settings::values.use_docked_mode) { | ||
| 595 | return false; | ||
| 596 | } | ||
| 597 | } | ||
| 598 | switch (controller) { | ||
| 599 | case NPadControllerType::ProController: | ||
| 600 | return style.pro_controller; | ||
| 601 | case NPadControllerType::Handheld: | ||
| 602 | return style.handheld; | ||
| 603 | case NPadControllerType::JoyDual: | ||
| 604 | return style.joycon_dual; | ||
| 605 | case NPadControllerType::JoyLeft: | ||
| 606 | return style.joycon_left; | ||
| 607 | case NPadControllerType::JoyRight: | ||
| 608 | return style.joycon_right; | ||
| 609 | case NPadControllerType::Pokeball: | ||
| 610 | return style.pokeball; | ||
| 611 | default: | ||
| 612 | return false; | ||
| 613 | } | ||
| 614 | } | ||
| 615 | |||
| 616 | Controller_NPad::LedPattern Controller_NPad::GetLedPattern(u32 npad_id) { | 586 | Controller_NPad::LedPattern Controller_NPad::GetLedPattern(u32 npad_id) { |
| 617 | if (npad_id == npad_id_list.back() || npad_id == npad_id_list[npad_id_list.size() - 2]) { | 587 | if (npad_id == npad_id_list.back() || npad_id == npad_id_list[npad_id_list.size() - 2]) { |
| 618 | // These are controllers without led patterns | 588 | // These are controllers without led patterns |
| @@ -659,25 +629,24 @@ void Controller_NPad::ClearAllConnectedControllers() { | |||
| 659 | } | 629 | } |
| 660 | 630 | ||
| 661 | void Controller_NPad::DisconnectAllConnectedControllers() { | 631 | void Controller_NPad::DisconnectAllConnectedControllers() { |
| 662 | std::for_each(connected_controllers.begin(), connected_controllers.end(), | 632 | for (ControllerHolder& controller : connected_controllers) { |
| 663 | [](ControllerHolder& controller) { controller.is_connected = false; }); | 633 | controller.is_connected = false; |
| 634 | } | ||
| 664 | } | 635 | } |
| 665 | 636 | ||
| 666 | void Controller_NPad::ConnectAllDisconnectedControllers() { | 637 | void Controller_NPad::ConnectAllDisconnectedControllers() { |
| 667 | std::for_each(connected_controllers.begin(), connected_controllers.end(), | 638 | for (ControllerHolder& controller : connected_controllers) { |
| 668 | [](ControllerHolder& controller) { | 639 | if (controller.type != NPadControllerType::None && !controller.is_connected) { |
| 669 | if (controller.type != NPadControllerType::None && !controller.is_connected) { | 640 | controller.is_connected = true; |
| 670 | controller.is_connected = false; | 641 | } |
| 671 | } | 642 | } |
| 672 | }); | ||
| 673 | } | 643 | } |
| 674 | 644 | ||
| 675 | void Controller_NPad::ClearAllControllers() { | 645 | void Controller_NPad::ClearAllControllers() { |
| 676 | std::for_each(connected_controllers.begin(), connected_controllers.end(), | 646 | for (ControllerHolder& controller : connected_controllers) { |
| 677 | [](ControllerHolder& controller) { | 647 | controller.type = NPadControllerType::None; |
| 678 | controller.type = NPadControllerType::None; | 648 | controller.is_connected = false; |
| 679 | controller.is_connected = false; | 649 | } |
| 680 | }); | ||
| 681 | } | 650 | } |
| 682 | 651 | ||
| 683 | u32 Controller_NPad::GetAndResetPressState() { | 652 | u32 Controller_NPad::GetAndResetPressState() { |
| @@ -685,10 +654,10 @@ u32 Controller_NPad::GetAndResetPressState() { | |||
| 685 | } | 654 | } |
| 686 | 655 | ||
| 687 | bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const { | 656 | bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const { |
| 688 | const bool support_handheld = | ||
| 689 | std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), NPAD_HANDHELD) != | ||
| 690 | supported_npad_id_types.end(); | ||
| 691 | if (controller == NPadControllerType::Handheld) { | 657 | if (controller == NPadControllerType::Handheld) { |
| 658 | const bool support_handheld = | ||
| 659 | std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), | ||
| 660 | NPAD_HANDHELD) != supported_npad_id_types.end(); | ||
| 692 | // Handheld is not even a supported type, lets stop here | 661 | // Handheld is not even a supported type, lets stop here |
| 693 | if (!support_handheld) { | 662 | if (!support_handheld) { |
| 694 | return false; | 663 | return false; |
| @@ -700,6 +669,7 @@ bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const | |||
| 700 | 669 | ||
| 701 | return true; | 670 | return true; |
| 702 | } | 671 | } |
| 672 | |||
| 703 | if (std::any_of(supported_npad_id_types.begin(), supported_npad_id_types.end(), | 673 | if (std::any_of(supported_npad_id_types.begin(), supported_npad_id_types.end(), |
| 704 | [](u32 npad_id) { return npad_id <= MAX_NPAD_ID; })) { | 674 | [](u32 npad_id) { return npad_id <= MAX_NPAD_ID; })) { |
| 705 | switch (controller) { | 675 | switch (controller) { |
| @@ -717,6 +687,7 @@ bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const | |||
| 717 | return false; | 687 | return false; |
| 718 | } | 688 | } |
| 719 | } | 689 | } |
| 690 | |||
| 720 | return false; | 691 | return false; |
| 721 | } | 692 | } |
| 722 | 693 | ||
| @@ -795,6 +766,7 @@ Controller_NPad::NPadControllerType Controller_NPad::DecideBestController( | |||
| 795 | priority_list.push_back(NPadControllerType::JoyLeft); | 766 | priority_list.push_back(NPadControllerType::JoyLeft); |
| 796 | priority_list.push_back(NPadControllerType::JoyRight); | 767 | priority_list.push_back(NPadControllerType::JoyRight); |
| 797 | priority_list.push_back(NPadControllerType::JoyDual); | 768 | priority_list.push_back(NPadControllerType::JoyDual); |
| 769 | break; | ||
| 798 | } | 770 | } |
| 799 | 771 | ||
| 800 | const auto iter = std::find_if(priority_list.begin(), priority_list.end(), | 772 | 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: | |||
| 301 | bool is_connected; | 301 | bool is_connected; |
| 302 | }; | 302 | }; |
| 303 | 303 | ||
| 304 | void InitNewlyAddedControler(std::size_t controller_idx); | ||
| 305 | bool IsControllerSupported(NPadControllerType controller) const; | ||
| 306 | NPadControllerType DecideBestController(NPadControllerType priority) const; | ||
| 307 | void RequestPadStateUpdate(u32 npad_id); | ||
| 308 | |||
| 304 | u32 press_state{}; | 309 | u32 press_state{}; |
| 305 | 310 | ||
| 306 | NPadType style{}; | 311 | NPadType style{}; |
| @@ -321,12 +326,7 @@ private: | |||
| 321 | std::array<ControllerHolder, 10> connected_controllers{}; | 326 | std::array<ControllerHolder, 10> connected_controllers{}; |
| 322 | bool can_controllers_vibrate{true}; | 327 | bool can_controllers_vibrate{true}; |
| 323 | 328 | ||
| 324 | void InitNewlyAddedControler(std::size_t controller_idx); | ||
| 325 | bool IsControllerSupported(NPadControllerType controller) const; | ||
| 326 | NPadControllerType DecideBestController(NPadControllerType priority) const; | ||
| 327 | void RequestPadStateUpdate(u32 npad_id); | ||
| 328 | std::array<ControllerPad, 10> npad_pad_states{}; | 329 | std::array<ControllerPad, 10> npad_pad_states{}; |
| 329 | bool IsControllerSupported(NPadControllerType controller); | ||
| 330 | bool is_in_lr_assignment_mode{false}; | 330 | bool is_in_lr_assignment_mode{false}; |
| 331 | Core::System& system; | 331 | Core::System& system; |
| 332 | }; | 332 | }; |