From a1c5b5c911a71cd0c79161fb7285bb45768aa6dc Mon Sep 17 00:00:00 2001 From: MaranBr Date: Mon, 25 Aug 2025 18:23:38 +0200 Subject: [PATCH] [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 Co-authored-by: MaranBr Co-committed-by: MaranBr --- .../am/service/library_applet_accessor.cpp | 15 +++++++++------ 1 file 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 storage) { Result ILibraryAppletAccessor::PopOutData(Out> 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())); }