summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Narr the Reg2024-01-21 13:51:50 -0600
committerGravatar Narr the Reg2024-01-21 14:05:18 -0600
commit1b984738ab7cd2031237e9d97f04ce1ff1ad88bb (patch)
tree68f78d461810f018a102e400f0be6be0ba40d403 /src
parentMerge pull request #12720 from t895/return-to-global (diff)
downloadyuzu-1b984738ab7cd2031237e9d97f04ce1ff1ad88bb.tar.gz
yuzu-1b984738ab7cd2031237e9d97f04ce1ff1ad88bb.tar.xz
yuzu-1b984738ab7cd2031237e9d97f04ce1ff1ad88bb.zip
service: hid: Implement EnableAppletForInput
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/hid/hid_system_server.cpp4
-rw-r--r--src/hid_core/resources/npad/npad.cpp13
-rw-r--r--src/hid_core/resources/npad/npad.h2
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
1323void 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
156private: 158private:
157 struct NpadControllerData { 159 struct NpadControllerData {
158 NpadInternalState* shared_memory = nullptr; 160 NpadInternalState* shared_memory = nullptr;