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 /Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs | |
| parent | ee0b14ba0811a76a306c1546be90de128a17f5cc (diff) | |
Fix typo and update priority/avoid duplicates on UpdateMutexOwner
Diffstat (limited to 'Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs')
| -rw-r--r-- | Ryujinx.Core/OsHle/Kernel/SvcThreadSync.cs | 44 |
1 files changed, 22 insertions, 22 deletions
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); |
