aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorgerman77 <[email protected]>2024-01-28 18:26:40 -0600
committergerman77 <[email protected]>2024-01-28 18:27:25 -0600
commit87e26de0fca682e48c21edd98c7636e797f8b2f2 (patch)
treef5e059ccd56edfaee3d60fffcff7584f7f1c0d80
parent575183d6dcd8da9b10ee41e47be4b7d4f8631783 (diff)
downloadyuzu-mainline-87e26de0fca682e48c21edd98c7636e797f8b2f2.tar.gz
yuzu-mainline-87e26de0fca682e48c21edd98c7636e797f8b2f2.zip
service: hid: Restore active aruid
-rw-r--r--src/hid_core/resources/applet_resource.cpp6
-rw-r--r--src/hid_core/resources/npad/npad_resource.cpp6
2 files changed, 12 insertions, 0 deletions
diff --git a/src/hid_core/resources/applet_resource.cpp b/src/hid_core/resources/applet_resource.cpp
index db4134037..243beb1c7 100644
--- a/src/hid_core/resources/applet_resource.cpp
+++ b/src/hid_core/resources/applet_resource.cpp
@@ -118,6 +118,12 @@ void AppletResource::UnregisterAppletResourceUserId(u64 aruid) {
data[index].aruid = 0;
registration_list.flag[index] = RegistrationStatus::PendingDelete;
+
+ for (std::size_t i = 0; i < AruidIndexMax; i++) {
+ if (registration_list.flag[i] == RegistrationStatus::Initialized) {
+ active_aruid = registration_list.aruid[i];
+ }
+ }
}
void AppletResource::FreeAppletResourceId(u64 aruid) {
diff --git a/src/hid_core/resources/npad/npad_resource.cpp b/src/hid_core/resources/npad/npad_resource.cpp
index ea9fc14ed..8dd86b58e 100644
--- a/src/hid_core/resources/npad/npad_resource.cpp
+++ b/src/hid_core/resources/npad/npad_resource.cpp
@@ -72,6 +72,12 @@ void NPadResource::UnregisterAppletResourceUserId(u64 aruid) {
state[aruid_index] = {};
registration_list.flag[aruid_index] = RegistrationStatus::PendingDelete;
}
+
+ for (std::size_t i = 0; i < AruidIndexMax; i++) {
+ if (registration_list.flag[i] == RegistrationStatus::Initialized) {
+ active_data_aruid = registration_list.aruid[i];
+ }
+ }
}
void NPadResource::DestroyStyleSetUpdateEvents(u64 aruid) {