diff --git a/Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs b/Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs index 59fc4dd08b..c89bd2d236 100644 --- a/Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs +++ b/Ryujinx.Core/OsHle/Services/Aud/IAudioDeviceService.cs @@ -1,4 +1,5 @@ using ChocolArm64.Memory; +using Ryujinx.Core.OsHle.Handles; using Ryujinx.Core.OsHle.Ipc; using System.Collections.Generic; using System.Text; @@ -11,13 +12,21 @@ namespace Ryujinx.Core.OsHle.Services.Aud public override IReadOnlyDictionary Commands => m_Commands; + private KEvent SystemEvent; + public IAudioDeviceService() { m_Commands = new Dictionary() { - { 0, ListAudioDeviceName }, - { 1, SetAudioDeviceOutputVolume }, + { 0, ListAudioDeviceName }, + { 1, SetAudioDeviceOutputVolume }, + { 4, QueryAudioDeviceSystemEvent }, + { 5, GetActiveChannelCount } }; + + SystemEvent = new KEvent(); + //TODO: We shouldn't be signaling this here. + SystemEvent.Handle.Set(); } public long ListAudioDeviceName(ServiceCtx Context) @@ -61,5 +70,25 @@ namespace Ryujinx.Core.OsHle.Services.Aud return 0; } + + public long QueryAudioDeviceSystemEvent(ServiceCtx Context) + { + int Handle = Context.Process.HandleTable.OpenHandle(SystemEvent); + + Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle); + + Logging.Stub(LogClass.ServiceAudio, "Stubbed"); + + return 0; + } + + public long GetActiveChannelCount(ServiceCtx Context) + { + Context.ResponseData.Write(2); + + Logging.Stub(LogClass.ServiceAudio, "Stubbed"); + + return 0; + } } -} \ No newline at end of file +}