diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2018-05-14 03:09:08 -0300 |
|---|---|---|
| committer | gdkchan <gab.dark.100@gmail.com> | 2018-05-14 03:09:08 -0300 |
| commit | fdfa9424c8fb05821a39965d88b3dbcc402fb57b (patch) | |
| tree | 01d98f65ff68a2b0c084d0b8f97bddab3400a0ff | |
| parent | ee0b14ba0811a76a306c1546be90de128a17f5cc (diff) | |
Fix typo and update priority/avoid duplicates on UpdateMutexOwner
| -rw-r--r-- | Ryujinx.Core/OsHle/Kernel/SvcThread.cs | 2 | ||||
| -rw-r--r-- | Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs | 44 |
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); |
