aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs16
1 files changed, 10 insertions, 6 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs b/Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs
index a5f9df5e..74867b44 100644
--- a/Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs
@@ -31,6 +31,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
_context.CriticalSection.Enter();
+ if (currentThread.TerminationRequested)
+ {
+ _context.CriticalSection.Leave();
+
+ return KernelResult.ThreadTerminating;
+ }
+
currentThread.SignaledObj = null;
currentThread.ObjSyncResult = Result.Success;
@@ -114,8 +121,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
currentThread.SignaledObj = null;
currentThread.ObjSyncResult = KernelResult.TimedOut;
- if (currentThread.ShallBeTerminated ||
- currentThread.SchedFlags == ThreadSchedState.TerminationPending)
+ if (currentThread.TerminationRequested)
{
_context.CriticalSection.Leave();
@@ -280,8 +286,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
_context.CriticalSection.Enter();
- if (currentThread.ShallBeTerminated ||
- currentThread.SchedFlags == ThreadSchedState.TerminationPending)
+ if (currentThread.TerminationRequested)
{
_context.CriticalSection.Leave();
@@ -351,8 +356,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
_context.CriticalSection.Enter();
- if (currentThread.ShallBeTerminated ||
- currentThread.SchedFlags == ThreadSchedState.TerminationPending)
+ if (currentThread.TerminationRequested)
{
_context.CriticalSection.Leave();