diff options
| author | MaranBr <maranbr@outlook.com> | 2025-08-25 18:23:38 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2025-08-25 18:23:38 +0200 |
| commit | a1c5b5c911a71cd0c79161fb7285bb45768aa6dc (patch) | |
| tree | e55af1f6d907313e7fd00c8928c5099787111241 /src | |
| parent | 302509d84d0612ce7823d82c4498d01fb86f72fd (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.cpp | 15 |
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())); } |
