diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/frontend/applets/controller.cpp | 2 | ||||
| -rw-r--r-- | src/core/frontend/applets/controller.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/am/applets/applet_controller.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/service/am/applets/applet_controller.h | 9 |
4 files changed, 16 insertions, 9 deletions
diff --git a/src/core/frontend/applets/controller.cpp b/src/core/frontend/applets/controller.cpp index 8e586e938..3300d4f79 100644 --- a/src/core/frontend/applets/controller.cpp +++ b/src/core/frontend/applets/controller.cpp | |||
| @@ -71,7 +71,7 @@ void DefaultControllerApplet::ReconfigureControllers(ReconfigureCallback callbac | |||
| 71 | } | 71 | } |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | callback(); | 74 | callback(true); |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | } // namespace Core::Frontend | 77 | } // namespace Core::Frontend |
diff --git a/src/core/frontend/applets/controller.h b/src/core/frontend/applets/controller.h index 5c488387d..19a2db6bf 100644 --- a/src/core/frontend/applets/controller.h +++ b/src/core/frontend/applets/controller.h | |||
| @@ -37,7 +37,7 @@ struct ControllerParameters { | |||
| 37 | 37 | ||
| 38 | class ControllerApplet : public Applet { | 38 | class ControllerApplet : public Applet { |
| 39 | public: | 39 | public: |
| 40 | using ReconfigureCallback = std::function<void()>; | 40 | using ReconfigureCallback = std::function<void(bool)>; |
| 41 | 41 | ||
| 42 | virtual ~ControllerApplet(); | 42 | virtual ~ControllerApplet(); |
| 43 | 43 | ||
diff --git a/src/core/hle/service/am/applets/applet_controller.cpp b/src/core/hle/service/am/applets/applet_controller.cpp index 2d1d115d7..9840d2547 100644 --- a/src/core/hle/service/am/applets/applet_controller.cpp +++ b/src/core/hle/service/am/applets/applet_controller.cpp | |||
| @@ -224,7 +224,8 @@ void Controller::Execute() { | |||
| 224 | parameters.allow_dual_joycons, parameters.allow_left_joycon, | 224 | parameters.allow_dual_joycons, parameters.allow_left_joycon, |
| 225 | parameters.allow_right_joycon); | 225 | parameters.allow_right_joycon); |
| 226 | 226 | ||
| 227 | frontend.ReconfigureControllers([this] { ConfigurationComplete(); }, parameters); | 227 | frontend.ReconfigureControllers( |
| 228 | [this](bool is_success) { ConfigurationComplete(is_success); }, parameters); | ||
| 228 | break; | 229 | break; |
| 229 | } | 230 | } |
| 230 | case ControllerSupportMode::ShowControllerStrapGuide: | 231 | case ControllerSupportMode::ShowControllerStrapGuide: |
| @@ -232,16 +233,16 @@ void Controller::Execute() { | |||
| 232 | case ControllerSupportMode::ShowControllerKeyRemappingForSystem: | 233 | case ControllerSupportMode::ShowControllerKeyRemappingForSystem: |
| 233 | UNIMPLEMENTED_MSG("ControllerSupportMode={} is not implemented", | 234 | UNIMPLEMENTED_MSG("ControllerSupportMode={} is not implemented", |
| 234 | controller_private_arg.mode); | 235 | controller_private_arg.mode); |
| 235 | ConfigurationComplete(); | 236 | ConfigurationComplete(true); |
| 236 | break; | 237 | break; |
| 237 | default: { | 238 | default: { |
| 238 | ConfigurationComplete(); | 239 | ConfigurationComplete(true); |
| 239 | break; | 240 | break; |
| 240 | } | 241 | } |
| 241 | } | 242 | } |
| 242 | } | 243 | } |
| 243 | 244 | ||
| 244 | void Controller::ConfigurationComplete() { | 245 | void Controller::ConfigurationComplete(bool is_success) { |
| 245 | ControllerSupportResultInfo result_info{}; | 246 | ControllerSupportResultInfo result_info{}; |
| 246 | 247 | ||
| 247 | // If enable_single_mode is enabled, player_count is 1 regardless of any other parameters. | 248 | // If enable_single_mode is enabled, player_count is 1 regardless of any other parameters. |
| @@ -250,7 +251,8 @@ void Controller::ConfigurationComplete() { | |||
| 250 | 251 | ||
| 251 | result_info.selected_id = static_cast<u32>(system.HIDCore().GetFirstNpadId()); | 252 | result_info.selected_id = static_cast<u32>(system.HIDCore().GetFirstNpadId()); |
| 252 | 253 | ||
| 253 | result_info.result = 0; | 254 | result_info.result = |
| 255 | is_success ? ControllerSupportResult::Success : ControllerSupportResult::Cancel; | ||
| 254 | 256 | ||
| 255 | LOG_DEBUG(Service_HID, "Result Info: player_count={}, selected_id={}, result={}", | 257 | LOG_DEBUG(Service_HID, "Result Info: player_count={}, selected_id={}, result={}", |
| 256 | result_info.player_count, result_info.selected_id, result_info.result); | 258 | result_info.player_count, result_info.selected_id, result_info.result); |
diff --git a/src/core/hle/service/am/applets/applet_controller.h b/src/core/hle/service/am/applets/applet_controller.h index 1fbabee11..f6c64f633 100644 --- a/src/core/hle/service/am/applets/applet_controller.h +++ b/src/core/hle/service/am/applets/applet_controller.h | |||
| @@ -48,6 +48,11 @@ enum class ControllerSupportCaller : u8 { | |||
| 48 | MaxControllerSupportCaller, | 48 | MaxControllerSupportCaller, |
| 49 | }; | 49 | }; |
| 50 | 50 | ||
| 51 | enum class ControllerSupportResult : u32 { | ||
| 52 | Success = 0, | ||
| 53 | Cancel = 2, | ||
| 54 | }; | ||
| 55 | |||
| 51 | struct ControllerSupportArgPrivate { | 56 | struct ControllerSupportArgPrivate { |
| 52 | u32 arg_private_size{}; | 57 | u32 arg_private_size{}; |
| 53 | u32 arg_size{}; | 58 | u32 arg_size{}; |
| @@ -112,7 +117,7 @@ struct ControllerSupportResultInfo { | |||
| 112 | s8 player_count{}; | 117 | s8 player_count{}; |
| 113 | INSERT_PADDING_BYTES(3); | 118 | INSERT_PADDING_BYTES(3); |
| 114 | u32 selected_id{}; | 119 | u32 selected_id{}; |
| 115 | u32 result{}; | 120 | ControllerSupportResult result{}; |
| 116 | }; | 121 | }; |
| 117 | static_assert(sizeof(ControllerSupportResultInfo) == 0xC, | 122 | static_assert(sizeof(ControllerSupportResultInfo) == 0xC, |
| 118 | "ControllerSupportResultInfo has incorrect size."); | 123 | "ControllerSupportResultInfo has incorrect size."); |
| @@ -131,7 +136,7 @@ public: | |||
| 131 | void Execute() override; | 136 | void Execute() override; |
| 132 | Result RequestExit() override; | 137 | Result RequestExit() override; |
| 133 | 138 | ||
| 134 | void ConfigurationComplete(); | 139 | void ConfigurationComplete(bool is_success); |
| 135 | 140 | ||
| 136 | private: | 141 | private: |
| 137 | const Core::Frontend::ControllerApplet& frontend; | 142 | const Core::Frontend::ControllerApplet& frontend; |