diff options
| author | 2024-01-21 13:51:50 -0600 | |
|---|---|---|
| committer | 2024-01-21 14:05:18 -0600 | |
| commit | 1b984738ab7cd2031237e9d97f04ce1ff1ad88bb (patch) | |
| tree | 68f78d461810f018a102e400f0be6be0ba40d403 | |
| parent | Merge pull request #12720 from t895/return-to-global (diff) | |
| download | yuzu-1b984738ab7cd2031237e9d97f04ce1ff1ad88bb.tar.gz yuzu-1b984738ab7cd2031237e9d97f04ce1ff1ad88bb.tar.xz yuzu-1b984738ab7cd2031237e9d97f04ce1ff1ad88bb.zip | |
service: hid: Implement EnableAppletForInput
| -rw-r--r-- | src/core/hle/service/hid/hid_system_server.cpp | 4 | ||||
| -rw-r--r-- | src/hid_core/resources/npad/npad.cpp | 13 | ||||
| -rw-r--r-- | src/hid_core/resources/npad/npad.h | 2 |
3 files changed, 17 insertions, 2 deletions
diff --git a/src/core/hle/service/hid/hid_system_server.cpp b/src/core/hle/service/hid/hid_system_server.cpp index 4466a189b..bf27ddfbf 100644 --- a/src/core/hle/service/hid/hid_system_server.cpp +++ b/src/core/hle/service/hid/hid_system_server.cpp | |||
| @@ -533,7 +533,7 @@ void IHidSystemServer::EnableAppletToGetInput(HLERequestContext& ctx) { | |||
| 533 | parameters.is_enabled, parameters.applet_resource_user_id); | 533 | parameters.is_enabled, parameters.applet_resource_user_id); |
| 534 | 534 | ||
| 535 | GetResourceManager()->EnableInput(parameters.applet_resource_user_id, parameters.is_enabled); | 535 | GetResourceManager()->EnableInput(parameters.applet_resource_user_id, parameters.is_enabled); |
| 536 | // GetResourceManager()->GetNpad()->EnableInput(parameters.applet_resource_user_id); | 536 | GetResourceManager()->GetNpad()->EnableAppletToGetInput(parameters.applet_resource_user_id); |
| 537 | 537 | ||
| 538 | IPC::ResponseBuilder rb{ctx, 2}; | 538 | IPC::ResponseBuilder rb{ctx, 2}; |
| 539 | rb.Push(ResultSuccess); | 539 | rb.Push(ResultSuccess); |
| @@ -596,7 +596,7 @@ void IHidSystemServer::EnableAppletToGetPadInput(HLERequestContext& ctx) { | |||
| 596 | parameters.is_enabled, parameters.applet_resource_user_id); | 596 | parameters.is_enabled, parameters.applet_resource_user_id); |
| 597 | 597 | ||
| 598 | GetResourceManager()->EnablePadInput(parameters.applet_resource_user_id, parameters.is_enabled); | 598 | GetResourceManager()->EnablePadInput(parameters.applet_resource_user_id, parameters.is_enabled); |
| 599 | // GetResourceManager()->GetNpad()->EnableInput(parameters.applet_resource_user_id); | 599 | GetResourceManager()->GetNpad()->EnableAppletToGetInput(parameters.applet_resource_user_id); |
| 600 | 600 | ||
| 601 | IPC::ResponseBuilder rb{ctx, 2}; | 601 | IPC::ResponseBuilder rb{ctx, 2}; |
| 602 | rb.Push(ResultSuccess); | 602 | rb.Push(ResultSuccess); |
diff --git a/src/hid_core/resources/npad/npad.cpp b/src/hid_core/resources/npad/npad.cpp index 212f01429..d13a489c9 100644 --- a/src/hid_core/resources/npad/npad.cpp +++ b/src/hid_core/resources/npad/npad.cpp | |||
| @@ -480,6 +480,10 @@ void NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing) { | |||
| 480 | continue; | 480 | continue; |
| 481 | } | 481 | } |
| 482 | 482 | ||
| 483 | if (!data->flag.enable_pad_input) { | ||
| 484 | continue; | ||
| 485 | } | ||
| 486 | |||
| 483 | RequestPadStateUpdate(aruid, controller.device->GetNpadIdType()); | 487 | RequestPadStateUpdate(aruid, controller.device->GetNpadIdType()); |
| 484 | auto& pad_state = controller.npad_pad_state; | 488 | auto& pad_state = controller.npad_pad_state; |
| 485 | auto& libnx_state = controller.npad_libnx_state; | 489 | auto& libnx_state = controller.npad_libnx_state; |
| @@ -1316,4 +1320,13 @@ void NPad::UpdateHandheldAbstractState() { | |||
| 1316 | abstracted_pads[NpadIdTypeToIndex(Core::HID::NpadIdType::Handheld)].Update(); | 1320 | abstracted_pads[NpadIdTypeToIndex(Core::HID::NpadIdType::Handheld)].Update(); |
| 1317 | } | 1321 | } |
| 1318 | 1322 | ||
| 1323 | void NPad::EnableAppletToGetInput(u64 aruid) { | ||
| 1324 | std::scoped_lock lock{mutex}; | ||
| 1325 | std::scoped_lock shared_lock{*applet_resource_holder.shared_mutex}; | ||
| 1326 | |||
| 1327 | for (auto& abstract_pad : abstracted_pads) { | ||
| 1328 | abstract_pad.EnableAppletToGetInput(aruid); | ||
| 1329 | } | ||
| 1330 | } | ||
| 1331 | |||
| 1319 | } // namespace Service::HID | 1332 | } // namespace Service::HID |
diff --git a/src/hid_core/resources/npad/npad.h b/src/hid_core/resources/npad/npad.h index 18b25c688..88289fa2b 100644 --- a/src/hid_core/resources/npad/npad.h +++ b/src/hid_core/resources/npad/npad.h | |||
| @@ -153,6 +153,8 @@ public: | |||
| 153 | 153 | ||
| 154 | void UpdateHandheldAbstractState(); | 154 | void UpdateHandheldAbstractState(); |
| 155 | 155 | ||
| 156 | void EnableAppletToGetInput(u64 aruid); | ||
| 157 | |||
| 156 | private: | 158 | private: |
| 157 | struct NpadControllerData { | 159 | struct NpadControllerData { |
| 158 | NpadInternalState* shared_memory = nullptr; | 160 | NpadInternalState* shared_memory = nullptr; |