diff options
| author | 2024-02-08 18:11:56 -0600 | |
|---|---|---|
| committer | 2024-02-08 18:50:54 -0600 | |
| commit | 0ac777460d8b4b3cd2b299c89ba2986f088d5e68 (patch) | |
| tree | f0170dbd819fc95c104f22c51c5f4e4eb970852f /src/hid_core/resources/npad | |
| parent | Merge pull request #12903 from liamwhite/const-offset (diff) | |
| download | yuzu-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.cpp | 4 | ||||
| -rw-r--r-- | src/hid_core/resources/npad/npad.h | 2 | ||||
| -rw-r--r-- | src/hid_core/resources/npad/npad_resource.cpp | 10 | ||||
| -rw-r--r-- | src/hid_core/resources/npad/npad_resource.h | 2 |
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 | ||
| 120 | void NPad::FreeAppletResourceId(u64 aruid) { | ||
| 121 | return npad_resource.FreeAppletResourceId(aruid); | ||
| 122 | } | ||
| 123 | |||
| 120 | void NPad::ControllerUpdate(Core::HID::ControllerTriggerType type, std::size_t controller_idx) { | 124 | void 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) { | |||
| 67 | void NPadResource::UnregisterAppletResourceUserId(u64 aruid) { | 67 | void 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 | ||
| 83 | void NPadResource::DestroyStyleSetUpdateEvents(u64 aruid) { | 83 | void 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(); |