aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.Core/OsHle/Kernel/SvcThread.cs2
-rw-r--r--Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs44
2 files changed, 23 insertions, 23 deletions
diff --git a/Ryujinx.Core/OsHle/Kernel/SvcThread.cs b/Ryujinx.Core/OsHle/Kernel/SvcThread.cs
index 597e42a6..f0f3d95b 100644
--- a/Ryujinx.Core/OsHle/Kernel/SvcThread.cs
+++ b/Ryujinx.Core/OsHle/Kernel/SvcThread.cs
@@ -155,7 +155,7 @@ namespace Ryujinx.Core.OsHle.Kernel
if (IdealCore == -2)
{
- //TODO: Get this valcdue from the NPDM file.
+ //TODO: Get this value from the NPDM file.
IdealCore = 0;
CoreMask = 1 << IdealCore;
diff --git a/Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs b/Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs
index 280065ec..f9e035ad 100644
--- a/Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs
+++ b/Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs
@@ -330,6 +330,28 @@ namespace Ryujinx.Core.OsHle.Kernel
}
}
+ private void UpdateMutexOwner(KThread CurrThread, KThread NewOwner, long MutexAddress)
+ {
+ //Go through all threads waiting for the mutex,
+ //and update the MutexOwner field to point to the new owner.
+ lock (Process.ThreadSyncLock)
+ {
+ for (int Index = 0; Index < CurrThread.MutexWaiters.Count; Index++)
+ {
+ KThread Thread = CurrThread.MutexWaiters[Index];
+
+ if (Thread.MutexAddress == MutexAddress)
+ {
+ CurrThread.MutexWaiters.RemoveAt(Index--);
+
+ Thread.MutexOwner = NewOwner;
+
+ InsertWaitingMutexThread(NewOwner, Thread);
+ }
+ }
+ }
+ }
+
private void InsertWaitingMutexThread(int OwnerThreadHandle, KThread WaitThread)
{
KThread OwnerThread = Process.HandleTable.GetData<KThread>(OwnerThreadHandle);
@@ -359,28 +381,6 @@ namespace Ryujinx.Core.OsHle.Kernel
}
}
- private void UpdateMutexOwner(KThread CurrThread, KThread NewOwner, long MutexAddress)
- {
- //Go through all threads waiting for the mutex,
- //and update the MutexOwner field to point to the new owner.
- lock (Process.ThreadSyncLock)
- {
- for (int Index = 0; Index < CurrThread.MutexWaiters.Count; Index++)
- {
- KThread Thread = CurrThread.MutexWaiters[Index];
-
- if (Thread.MutexAddress == MutexAddress)
- {
- CurrThread.MutexWaiters.RemoveAt(Index--);
-
- Thread.MutexOwner = NewOwner;
-
- NewOwner.MutexWaiters.Add(Thread);
- }
- }
- }
- }
-
private KThread GetHighestPriority(List<KThread> Threads, long MutexAddress)
{
return GetHighestPriority(Threads, x => x.MutexAddress == MutexAddress);