aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-04-19 00:19:22 -0300
committergdkchan <gab.dark.100@gmail.com>2018-04-19 00:19:22 -0300
commit6e69cd9284c0ba4bb25560f83dcea298169bdf7b (patch)
tree34e91940bedc4a55f95cda8e1c18b9dab55d29ed
parentac80e7d3f90496d5f16f53afed888cd854fe6975 (diff)
Fix bad merge, and a few other fixes
-rw-r--r--Ryujinx.Core/OsHle/Handles/KProcessScheduler.cs10
-rw-r--r--Ryujinx.Core/OsHle/Horizon.cs2
-rw-r--r--Ryujinx.Core/OsHle/Process.cs2
-rw-r--r--Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs3
4 files changed, 14 insertions, 3 deletions
diff --git a/Ryujinx.Core/OsHle/Handles/KProcessScheduler.cs b/Ryujinx.Core/OsHle/Handles/KProcessScheduler.cs
index 238febd0..7cdf5f9c 100644
--- a/Ryujinx.Core/OsHle/Handles/KProcessScheduler.cs
+++ b/Ryujinx.Core/OsHle/Handles/KProcessScheduler.cs
@@ -95,6 +95,11 @@ namespace Ryujinx.Core.OsHle.Handles
return Threads.Contains(SchedThread);
}
}
+
+ public bool Remove(SchedulerThread SchedThread)
+ {
+ return Threads.Remove(SchedThread);
+ }
}
private ConcurrentDictionary<KThread, SchedulerThread> AllThreads;
@@ -153,6 +158,11 @@ namespace Ryujinx.Core.OsHle.Handles
lock (SchedLock)
{
+ if (AllThreads.TryRemove(Thread, out SchedulerThread SchedThread))
+ {
+ WaitingToRun[Thread.ProcessorId].Remove(SchedThread);
+ }
+
SchedulerThread NewThread = WaitingToRun[Thread.ProcessorId].Pop();
if (NewThread == null)
diff --git a/Ryujinx.Core/OsHle/Horizon.cs b/Ryujinx.Core/OsHle/Horizon.cs
index 6442025f..9e113080 100644
--- a/Ryujinx.Core/OsHle/Horizon.cs
+++ b/Ryujinx.Core/OsHle/Horizon.cs
@@ -179,6 +179,8 @@ namespace Ryujinx.Core.OsHle
}
VsyncEvent.Dispose();
+
+ Scheduler.Dispose();
}
}
}
diff --git a/Ryujinx.Core/OsHle/Process.cs b/Ryujinx.Core/OsHle/Process.cs
index f56103dc..bacca9a3 100644
--- a/Ryujinx.Core/OsHle/Process.cs
+++ b/Ryujinx.Core/OsHle/Process.cs
@@ -370,8 +370,6 @@ namespace Ryujinx.Core.OsHle
INvDrvServices.NvMapsById.DeleteProcess(this);
INvDrvServices.NvMapsFb .DeleteProcess(this);
- Scheduler.Dispose();
-
AppletState.Dispose();
SvcHandler.Dispose();
diff --git a/Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs b/Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs
index c89bd2d2..b27d1448 100644
--- a/Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs
+++ b/Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs
@@ -25,8 +25,9 @@ namespace Ryujinx.Core.OsHle.Services.Aud
};
SystemEvent = new KEvent();
+
//TODO: We shouldn't be signaling this here.
- SystemEvent.Handle.Set();
+ SystemEvent.WaitEvent.Set();
}
public long ListAudioDeviceName(ServiceCtx Context)