summaryrefslogtreecommitdiff
path: root/src/hid_core/resources/npad
diff options
context:
space:
mode:
authorGravatar Narr the Reg2024-02-08 18:11:56 -0600
committerGravatar Narr the Reg2024-02-08 18:50:54 -0600
commit0ac777460d8b4b3cd2b299c89ba2986f088d5e68 (patch)
treef0170dbd819fc95c104f22c51c5f4e4eb970852f /src/hid_core/resources/npad
parentMerge pull request #12903 from liamwhite/const-offset (diff)
downloadyuzu-0ac777460d8b4b3cd2b299c89ba2986f088d5e68.tar.gz
yuzu-0ac777460d8b4b3cd2b299c89ba2986f088d5e68.tar.xz
yuzu-0ac777460d8b4b3cd2b299c89ba2986f088d5e68.zip
service: hid: Free npad applet resource
Diffstat (limited to 'src/hid_core/resources/npad')
-rw-r--r--src/hid_core/resources/npad/npad.cpp4
-rw-r--r--src/hid_core/resources/npad/npad.h2
-rw-r--r--src/hid_core/resources/npad/npad_resource.cpp10
-rw-r--r--src/hid_core/resources/npad/npad_resource.h2
4 files changed, 14 insertions, 4 deletions
diff --git a/src/hid_core/resources/npad/npad.cpp b/src/hid_core/resources/npad/npad.cpp
index 053625b55..e10e97e1c 100644
--- a/src/hid_core/resources/npad/npad.cpp
+++ b/src/hid_core/resources/npad/npad.cpp
@@ -117,6 +117,10 @@ Result NPad::ActivateNpadResource(u64 aruid) {
117 return npad_resource.Activate(aruid); 117 return npad_resource.Activate(aruid);
118} 118}
119 119
120void NPad::FreeAppletResourceId(u64 aruid) {
121 return npad_resource.FreeAppletResourceId(aruid);
122}
123
120void NPad::ControllerUpdate(Core::HID::ControllerTriggerType type, std::size_t controller_idx) { 124void NPad::ControllerUpdate(Core::HID::ControllerTriggerType type, std::size_t controller_idx) {
121 if (type == Core::HID::ControllerTriggerType::All) { 125 if (type == Core::HID::ControllerTriggerType::All) {
122 ControllerUpdate(Core::HID::ControllerTriggerType::Connected, controller_idx); 126 ControllerUpdate(Core::HID::ControllerTriggerType::Connected, controller_idx);
diff --git a/src/hid_core/resources/npad/npad.h b/src/hid_core/resources/npad/npad.h
index c63488346..99e761127 100644
--- a/src/hid_core/resources/npad/npad.h
+++ b/src/hid_core/resources/npad/npad.h
@@ -58,6 +58,8 @@ public:
58 Result ActivateNpadResource(); 58 Result ActivateNpadResource();
59 Result ActivateNpadResource(u64 aruid); 59 Result ActivateNpadResource(u64 aruid);
60 60
61 void FreeAppletResourceId(u64 aruid);
62
61 // When the controller is requesting an update for the shared memory 63 // When the controller is requesting an update for the shared memory
62 void OnUpdate(const Core::Timing::CoreTiming& core_timing); 64 void OnUpdate(const Core::Timing::CoreTiming& core_timing);
63 65
diff --git a/src/hid_core/resources/npad/npad_resource.cpp b/src/hid_core/resources/npad/npad_resource.cpp
index 8dd86b58e..79f7d74c0 100644
--- a/src/hid_core/resources/npad/npad_resource.cpp
+++ b/src/hid_core/resources/npad/npad_resource.cpp
@@ -67,7 +67,7 @@ Result NPadResource::RegisterAppletResourceUserId(u64 aruid) {
67void NPadResource::UnregisterAppletResourceUserId(u64 aruid) { 67void NPadResource::UnregisterAppletResourceUserId(u64 aruid) {
68 const u64 aruid_index = GetIndexFromAruid(aruid); 68 const u64 aruid_index = GetIndexFromAruid(aruid);
69 69
70 DestroyStyleSetUpdateEvents(aruid); 70 FreeAppletResourceId(aruid);
71 if (aruid_index < AruidIndexMax) { 71 if (aruid_index < AruidIndexMax) {
72 state[aruid_index] = {}; 72 state[aruid_index] = {};
73 registration_list.flag[aruid_index] = RegistrationStatus::PendingDelete; 73 registration_list.flag[aruid_index] = RegistrationStatus::PendingDelete;
@@ -80,14 +80,18 @@ void NPadResource::UnregisterAppletResourceUserId(u64 aruid) {
80 } 80 }
81} 81}
82 82
83void NPadResource::DestroyStyleSetUpdateEvents(u64 aruid) { 83void NPadResource::FreeAppletResourceId(u64 aruid) {
84 const u64 aruid_index = GetIndexFromAruid(aruid); 84 const u64 aruid_index = GetIndexFromAruid(aruid);
85 85
86 if (aruid_index >= AruidIndexMax) { 86 if (aruid_index >= AruidIndexMax) {
87 return; 87 return;
88 } 88 }
89 89
90 for (auto& controller_state : state[aruid_index].controller_state) { 90 auto& aruid_data = state[aruid_index];
91
92 aruid_data.flag.is_assigned.Assign(false);
93
94 for (auto& controller_state : aruid_data.controller_state) {
91 if (!controller_state.is_styleset_update_event_initialized) { 95 if (!controller_state.is_styleset_update_event_initialized) {
92 continue; 96 continue;
93 } 97 }
diff --git a/src/hid_core/resources/npad/npad_resource.h b/src/hid_core/resources/npad/npad_resource.h
index aed89eec6..8ee5702fd 100644
--- a/src/hid_core/resources/npad/npad_resource.h
+++ b/src/hid_core/resources/npad/npad_resource.h
@@ -55,7 +55,7 @@ public:
55 Result RegisterAppletResourceUserId(u64 aruid); 55 Result RegisterAppletResourceUserId(u64 aruid);
56 void UnregisterAppletResourceUserId(u64 aruid); 56 void UnregisterAppletResourceUserId(u64 aruid);
57 57
58 void DestroyStyleSetUpdateEvents(u64 aruid); 58 void FreeAppletResourceId(u64 aruid);
59 59
60 Result Activate(u64 aruid); 60 Result Activate(u64 aruid);
61 Result Activate(); 61 Result Activate();