diff options
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index c7beb9c3ce..4f1d849209 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -120,13 +120,13 @@ struct KernelCore::Impl { } void TerminateAllProcesses() { - auto& kernel = system.Kernel(); - // Applet cleanup can remove processes while termination waits for its threads. - auto processes = kernel.GetProcessList(); - for (auto& process : processes) { - process->Terminate(kernel); - kernel.RemoveProcess(process.GetPointerUnsafe()); + std::scoped_lock lk{process_list_lock}; + for (auto& process : process_list) { + process->Terminate(system.Kernel()); + process->Close(system.Kernel()); + process = nullptr; } + process_list.clear(); } void Shutdown(KernelCore& kernel) { |
