Browse Source

[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>
pull/314/head
MaranBr 4 months ago
committed by crueter
parent
commit
a1c5b5c911
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 15
      src/core/hle/service/am/service/library_applet_accessor.cpp

15
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-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // 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) { Result ILibraryAppletAccessor::PopOutData(Out<SharedPointer<IStorage>> out_storage) {
LOG_DEBUG(Service_AM, "called"); 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())); R_RETURN(m_broker->GetOutData().Pop(out_storage.Get()));
} }

Loading…
Cancel
Save