aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Aud
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-09-18 20:36:43 -0300
committerGitHub <noreply@github.com>2018-09-18 20:36:43 -0300
commitb8133c19971c7a2026af803003fafedbdb70488e (patch)
tree84f4630e897ccd3f77b86051241a22a6cf45193d /Ryujinx.HLE/HOS/Services/Aud
parent33e2810ef36fe0cf613aecd4c609f425aed02539 (diff)
Thread scheduler rewrite (#393)
* Started to rewrite the thread scheduler * Add a single core-like scheduling mode, enabled by default * Clear exclusive monitor on context switch * Add SetThreadActivity, misc fixes * Implement WaitForAddress and SignalToAddress svcs, misc fixes * Misc fixes (on SetActivity and Arbiter), other tweaks * Rebased * Add missing null check * Rename multicore key on config, fix UpdatePriorityInheritance * Make scheduling data MLQs private * nit: Ordering
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Aud')
-rw-r--r--Ryujinx.HLE/HOS/Services/Aud/AudioOut/IAudioOut.cs2
-rw-r--r--Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs12
-rw-r--r--Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs6
-rw-r--r--Ryujinx.HLE/HOS/Services/Aud/IAudioOutManager.cs4
-rw-r--r--Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs8
5 files changed, 18 insertions, 14 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Aud/AudioOut/IAudioOut.cs b/Ryujinx.HLE/HOS/Services/Aud/AudioOut/IAudioOut.cs
index 81561f04..2b0b5293 100644
--- a/Ryujinx.HLE/HOS/Services/Aud/AudioOut/IAudioOut.cs
+++ b/Ryujinx.HLE/HOS/Services/Aud/AudioOut/IAudioOut.cs
@@ -155,8 +155,6 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioOut
if (Disposing)
{
AudioOut.CloseTrack(Track);
-
- ReleaseEvent.Dispose();
}
}
}
diff --git a/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs b/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs
index 8c83338d..ae85bf01 100644
--- a/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs
+++ b/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs
@@ -38,7 +38,11 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
private int Track;
- public IAudioRenderer(AMemory Memory, IAalOutput AudioOut, AudioRendererParameter Params)
+ public IAudioRenderer(
+ Horizon System,
+ AMemory Memory,
+ IAalOutput AudioOut,
+ AudioRendererParameter Params)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
{
@@ -48,7 +52,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
{ 7, QuerySystemEvent }
};
- UpdateEvent = new KEvent();
+ UpdateEvent = new KEvent(System);
this.Memory = Memory;
this.AudioOut = AudioOut;
@@ -68,7 +72,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
private void AudioCallback()
{
- UpdateEvent.WaitEvent.Set();
+ UpdateEvent.Signal();
}
private static T[] CreateArray<T>(int Size) where T : new()
@@ -310,8 +314,6 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
if (Disposing)
{
AudioOut.CloseTrack(Track);
-
- UpdateEvent.Dispose();
}
}
}
diff --git a/Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs b/Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs
index 2e6056ef..adecc721 100644
--- a/Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs
+++ b/Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs
@@ -15,7 +15,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
private KEvent SystemEvent;
- public IAudioDevice()
+ public IAudioDevice(Horizon System)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
{
@@ -32,10 +32,10 @@ namespace Ryujinx.HLE.HOS.Services.Aud
{ 12, QueryAudioDeviceOutputEvent }
};
- SystemEvent = new KEvent();
+ SystemEvent = new KEvent(System);
//TODO: We shouldn't be signaling this here.
- SystemEvent.WaitEvent.Set();
+ SystemEvent.Signal();
}
public long ListAudioDeviceName(ServiceCtx Context)
diff --git a/Ryujinx.HLE/HOS/Services/Aud/IAudioOutManager.cs b/Ryujinx.HLE/HOS/Services/Aud/IAudioOutManager.cs
index 8d2435b0..ef9250d9 100644
--- a/Ryujinx.HLE/HOS/Services/Aud/IAudioOutManager.cs
+++ b/Ryujinx.HLE/HOS/Services/Aud/IAudioOutManager.cs
@@ -146,11 +146,11 @@ namespace Ryujinx.HLE.HOS.Services.Aud
Channels = DefaultChannelsCount;
}
- KEvent ReleaseEvent = new KEvent();
+ KEvent ReleaseEvent = new KEvent(Context.Device.System);
ReleaseCallback Callback = () =>
{
- ReleaseEvent.WaitEvent.Set();
+ ReleaseEvent.Signal();
};
IAalOutput AudioOut = Context.Device.AudioOut;
diff --git a/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs b/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs
index faa42290..7ebe2b58 100644
--- a/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs
+++ b/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs
@@ -40,7 +40,11 @@ namespace Ryujinx.HLE.HOS.Services.Aud
AudioRendererParameter Params = GetAudioRendererParameter(Context);
- MakeObject(Context, new IAudioRenderer(Context.Memory, AudioOut, Params));
+ MakeObject(Context, new IAudioRenderer(
+ Context.Device.System,
+ Context.Memory,
+ AudioOut,
+ Params));
return 0;
}
@@ -161,7 +165,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
{
long UserId = Context.RequestData.ReadInt64();
- MakeObject(Context, new IAudioDevice());
+ MakeObject(Context, new IAudioDevice(Context.Device.System));
return 0;
}