aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-04-25 19:33:14 -0300
committerGitHub <noreply@github.com>2023-04-25 19:33:14 -0300
commit097562bc6c227c42f803ce1078fcb4adf06cd20c (patch)
tree6e737fa6cdf49fbea157a95e3057b131a7d24013 /Ryujinx.HLE/HOS/Kernel/Threading/KAddressArbiter.cs
parentdb4242c5dcca2df90374f58ddeb3601c1eb06cce (diff)
Add missing check for thread termination on ArbitrateLock (#4722)1.1.732
* Add missing check for thread termination on ArbitrateLock * Use TerminationRequested in all places where it can be used
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();