summaryrefslogtreecommitdiff
path: root/src/hid_core
diff options
context:
space:
mode:
Diffstat (limited to 'src/hid_core')
-rw-r--r--src/hid_core/resource_manager.cpp2
-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
5 files changed, 16 insertions, 4 deletions
diff --git a/src/hid_core/resource_manager.cpp b/src/hid_core/resource_manager.cpp
index 245da582e..01261ba97 100644
--- a/src/hid_core/resource_manager.cpp
+++ b/src/hid_core/resource_manager.cpp
@@ -314,6 +314,7 @@ void ResourceManager::UnregisterAppletResourceUserId(u64 aruid) {
314 std::scoped_lock lock{shared_mutex}; 314 std::scoped_lock lock{shared_mutex};
315 applet_resource->UnregisterAppletResourceUserId(aruid); 315 applet_resource->UnregisterAppletResourceUserId(aruid);
316 npad->UnregisterAppletResourceUserId(aruid); 316 npad->UnregisterAppletResourceUserId(aruid);
317 // palma->UnregisterAppletResourceUserId(aruid);
317} 318}
318 319
319Result ResourceManager::GetSharedMemoryHandle(Kernel::KSharedMemory** out_handle, u64 aruid) { 320Result ResourceManager::GetSharedMemoryHandle(Kernel::KSharedMemory** out_handle, u64 aruid) {
@@ -324,6 +325,7 @@ Result ResourceManager::GetSharedMemoryHandle(Kernel::KSharedMemory** out_handle
324void ResourceManager::FreeAppletResourceId(u64 aruid) { 325void ResourceManager::FreeAppletResourceId(u64 aruid) {
325 std::scoped_lock lock{shared_mutex}; 326 std::scoped_lock lock{shared_mutex};
326 applet_resource->FreeAppletResourceId(aruid); 327 applet_resource->FreeAppletResourceId(aruid);
328 npad->FreeAppletResourceId(aruid);
327} 329}
328 330
329void ResourceManager::EnableInput(u64 aruid, bool is_enabled) { 331void ResourceManager::EnableInput(u64 aruid, bool is_enabled) {
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();