Bläddra i källkod

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)
David Marcec 7 år sedan
förälder
incheckning
92fae7e1ab
1 ändrade filer med 6 tillägg och 0 borttagningar
  1. 6 0
      src/core/hle/kernel/svc.cpp

+ 6 - 0
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}",
             "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}",
             reason, info1, info2);
             reason, info1, info2);
         ASSERT(false);
         ASSERT(false);
+
+        Core::CurrentProcess()->PrepareForTermination();
+
+        // Kill the current thread
+        GetCurrentThread()->Stop();
+        Core::System::GetInstance().PrepareReschedule();
     }
     }
 }
 }