diff options
author | David Marcec <dmarcecguzman@gmail.com> | 2018-10-14 18:14:51 +1100 |
---|---|---|
committer | David Marcec <dmarcecguzman@gmail.com> | 2018-10-14 18:14:51 +1100 |
commit | 92fae7e1abcf4c44a3c4abdabdd9b8586560a30c (patch) | |
tree | 6eff3c5a144552e44da2750a0c04f0b002cd6889 | |
parent | 1584fb6b385d51ef40e1e22c180322a552d9c98a (diff) |
Stop all threads on svcBreak
This should help diagnose crashes easier and prevent many users thinking that a game is still running when in fact it's just an audio thread still running(this is typically not killed when svcBreak is hit since the game expects us to do this)
-rw-r--r-- | src/core/hle/kernel/svc.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index e406df829..198865fd0 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -389,6 +389,12 @@ static void Break(u32 reason, u64 info1, u64 info2) { "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}", reason, info1, info2); ASSERT(false); + + Core::CurrentProcess()->PrepareForTermination(); + + // Kill the current thread + GetCurrentThread()->Stop(); + Core::System::GetInstance().PrepareReschedule(); } } |