aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaranBr <maranbr@outlook.com>2025-08-25 18:23:38 +0200
committercrueter <crueter@eden-emu.dev>2025-08-25 18:23:38 +0200
commita1c5b5c911a71cd0c79161fb7285bb45768aa6dc (patch)
treee55af1f6d907313e7fd00c8928c5099787111241 /src
parent302509d84d0612ce7823d82c4498d01fb86f72fd (diff)
[core] Fix a specific condition where the controller applet would still freeze in MK8D (#311)
This fixes a specific condition where the controller applet would still freeze on the MK8D under certain circumstances. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/311 Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev> Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/am/service/library_applet_accessor.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/core/hle/service/am/service/library_applet_accessor.cpp b/src/core/hle/service/am/service/library_applet_accessor.cpp
index 5ce96a1e3f..b603cdb573 100644
--- a/src/core/hle/service/am/service/library_applet_accessor.cpp
+++ b/src/core/hle/service/am/service/library_applet_accessor.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -101,12 +104,12 @@ Result ILibraryAppletAccessor::PushInData(SharedPointer<IStorage> storage) {
Result ILibraryAppletAccessor::PopOutData(Out<SharedPointer<IStorage>> out_storage) {
LOG_DEBUG(Service_AM, "called");
- if (auto caller_applet = m_applet->caller_applet.lock(); caller_applet) {
- Event m_system_event = caller_applet->lifecycle_manager.GetSystemEvent();
- m_system_event.Signal();
- caller_applet->lifecycle_manager.RequestResumeNotification();
- m_system_event.Clear();
- }
+ if (auto caller_applet = m_applet->caller_applet.lock(); caller_applet) {
+ caller_applet->lifecycle_manager.GetSystemEvent().Signal();
+ caller_applet->lifecycle_manager.RequestResumeNotification();
+ caller_applet->lifecycle_manager.GetSystemEvent().Clear();
+ caller_applet->lifecycle_manager.SignalSystemEventIfNeeded();
+ }
R_RETURN(m_broker->GetOutData().Pop(out_storage.Get()));
}