diff --git a/src/Ryujinx.Horizon/Am/Ipc/Controllers/AudioController.cs b/src/Ryujinx.Horizon/Am/Ipc/Controllers/AudioController.cs new file mode 100644 index 0000000000..ab4f6c6302 --- /dev/null +++ b/src/Ryujinx.Horizon/Am/Ipc/Controllers/AudioController.cs @@ -0,0 +1,49 @@ +using Ryujinx.Horizon.Common; +using Ryujinx.Horizon.Sdk.Am; +using Ryujinx.Horizon.Sdk.Sf; + +namespace Ryujinx.Horizon.Am.Ipc.Controllers +{ + partial class AudioController : IAudioController + { + private float _mainAppletVolume; + private float _libraryAppletVolume; + + [CmifCommand(0)] + public Result SetExpectedMasterVolume(float mainAppletVolume, float libraryAppletVolume) + { + _mainAppletVolume = mainAppletVolume; + _libraryAppletVolume = libraryAppletVolume; + + return Result.Success; + } + + [CmifCommand(1)] + public Result GetMainAppletExpectedMasterVolume(out float mainAppletVolume) + { + mainAppletVolume = _mainAppletVolume; + + return Result.Success; + } + + [CmifCommand(2)] + public Result GetLibraryAppletExpectedMasterVolume(out float libraryAppletVolume) + { + libraryAppletVolume = _libraryAppletVolume; + + return Result.Success; + } + + [CmifCommand(3)] + public Result ChangeMainAppletMasterVolume(float volume, ulong value) + { + return Result.Success; + } + + [CmifCommand(4)] + public Result SetTransparentVolumeRate(float volume) + { + return Result.Success; + } + } +} diff --git a/src/Ryujinx.Horizon/Am/Ipc/Controllers/WindowController.cs b/src/Ryujinx.Horizon/Am/Ipc/Controllers/WindowController.cs new file mode 100644 index 0000000000..193ed75e48 --- /dev/null +++ b/src/Ryujinx.Horizon/Am/Ipc/Controllers/WindowController.cs @@ -0,0 +1,57 @@ +using Ryujinx.Horizon.Common; +using Ryujinx.Horizon.Sdk.Am; +using Ryujinx.Horizon.Sdk.Sf; + +namespace Ryujinx.Horizon.Am.Ipc.Controllers +{ + partial class WindowController : IWindowController + { + [CmifCommand(0)] + public Result CreateWindow() + { + throw new System.NotImplementedException(); + } + + [CmifCommand(1)] + public Result GetAppletResourceUserId() + { + throw new System.NotImplementedException(); + } + + [CmifCommand(2)] + public Result GetAppletResourceUserIdOfCallerApplet() + { + throw new System.NotImplementedException(); + } + + [CmifCommand(10)] + public Result AcquireForegroundRights() + { + throw new System.NotImplementedException(); + } + + [CmifCommand(11)] + public Result ReleaseForegroundRights() + { + throw new System.NotImplementedException(); + } + + [CmifCommand(12)] + public Result RejectToChangeIntoBackground() + { + throw new System.NotImplementedException(); + } + + [CmifCommand(20)] + public Result SetAppletWindowVisibility(bool visibility) + { + throw new System.NotImplementedException(); + } + + [CmifCommand(21)] + public Result SetAppletGpuTimeSlice(long gpuTime) + { + throw new System.NotImplementedException(); + } + } +} diff --git a/src/Ryujinx.Horizon/Am/Ipc/Proxies/ApplicationProxy.cs b/src/Ryujinx.Horizon/Am/Ipc/Proxies/ApplicationProxy.cs index 114075c033..e05229517f 100644 --- a/src/Ryujinx.Horizon/Am/Ipc/Proxies/ApplicationProxy.cs +++ b/src/Ryujinx.Horizon/Am/Ipc/Proxies/ApplicationProxy.cs @@ -24,15 +24,19 @@ namespace Ryujinx.Horizon.Am.Ipc.Proxies } [CmifCommand(2)] - public Result GetWindowController() + public Result GetWindowController(out IWindowController windowController) { - throw new System.NotImplementedException(); + windowController = new WindowController(); + + return Result.Success; } [CmifCommand(3)] - public Result GetAudioController() + public Result GetAudioController(out IAudioController audioController) { - throw new System.NotImplementedException(); + audioController = new AudioController(); + + return Result.Success; } [CmifCommand(4)] diff --git a/src/Ryujinx.Horizon/Am/Ipc/Proxies/LibraryAppletProxy.cs b/src/Ryujinx.Horizon/Am/Ipc/Proxies/LibraryAppletProxy.cs index 38d0af67d9..2cc7434c8e 100644 --- a/src/Ryujinx.Horizon/Am/Ipc/Proxies/LibraryAppletProxy.cs +++ b/src/Ryujinx.Horizon/Am/Ipc/Proxies/LibraryAppletProxy.cs @@ -24,15 +24,19 @@ namespace Ryujinx.Horizon.Am.Ipc.Proxies } [CmifCommand(2)] - public Result GetWindowController() + public Result GetWindowController(out IWindowController windowController) { - throw new System.NotImplementedException(); + windowController = new WindowController(); + + return Result.Success; } [CmifCommand(3)] - public Result GetAudioController() + public Result GetAudioController(out IAudioController audioController) { - throw new System.NotImplementedException(); + audioController = new AudioController(); + + return Result.Success; } [CmifCommand(4)] diff --git a/src/Ryujinx.Horizon/Am/Ipc/Proxies/OverlayAppletProxy.cs b/src/Ryujinx.Horizon/Am/Ipc/Proxies/OverlayAppletProxy.cs index 8ec6000d11..1622d93ea6 100644 --- a/src/Ryujinx.Horizon/Am/Ipc/Proxies/OverlayAppletProxy.cs +++ b/src/Ryujinx.Horizon/Am/Ipc/Proxies/OverlayAppletProxy.cs @@ -24,15 +24,19 @@ namespace Ryujinx.Horizon.Am.Ipc.Proxies } [CmifCommand(2)] - public Result GetWindowController() + public Result GetWindowController(out IWindowController windowController) { - throw new System.NotImplementedException(); + windowController = new WindowController(); + + return Result.Success; } [CmifCommand(3)] - public Result GetAudioController() + public Result GetAudioController(out IAudioController audioController) { - throw new System.NotImplementedException(); + audioController = new AudioController(); + + return Result.Success; } [CmifCommand(4)] diff --git a/src/Ryujinx.Horizon/Am/Ipc/Proxies/SystemAppletProxy.cs b/src/Ryujinx.Horizon/Am/Ipc/Proxies/SystemAppletProxy.cs index e8387417cd..d031568252 100644 --- a/src/Ryujinx.Horizon/Am/Ipc/Proxies/SystemAppletProxy.cs +++ b/src/Ryujinx.Horizon/Am/Ipc/Proxies/SystemAppletProxy.cs @@ -24,15 +24,19 @@ namespace Ryujinx.Horizon.Am.Ipc.Proxies } [CmifCommand(2)] - public Result GetWindowController() + public Result GetWindowController(out IWindowController windowController) { - throw new System.NotImplementedException(); + windowController = new WindowController(); + + return Result.Success; } [CmifCommand(3)] - public Result GetAudioController() + public Result GetAudioController(out IAudioController audioController) { - throw new System.NotImplementedException(); + audioController = new AudioController(); + + return Result.Success; } [CmifCommand(4)] diff --git a/src/Ryujinx.Horizon/Sdk/Am/IApplicationProxy.cs b/src/Ryujinx.Horizon/Sdk/Am/IApplicationProxy.cs index 4c9a169521..10f9a79b30 100644 --- a/src/Ryujinx.Horizon/Sdk/Am/IApplicationProxy.cs +++ b/src/Ryujinx.Horizon/Sdk/Am/IApplicationProxy.cs @@ -6,8 +6,8 @@ namespace Ryujinx.Horizon.Sdk.Am { Result GetCommonStateGetter(out ICommonStateGetter commonStateGetter); Result GetSelfController(out ISelfController selfController); - Result GetWindowController(); - Result GetAudioController(); + Result GetWindowController(out IWindowController windowController); + Result GetAudioController(out IAudioController audioController); Result GetDisplayController(); Result GetProcessWindingController(); Result GetLibraryAppletCreator(); diff --git a/src/Ryujinx.Horizon/Sdk/Am/IAudioController.cs b/src/Ryujinx.Horizon/Sdk/Am/IAudioController.cs new file mode 100644 index 0000000000..1ef3f01114 --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/Am/IAudioController.cs @@ -0,0 +1,13 @@ +using Ryujinx.Horizon.Common; + +namespace Ryujinx.Horizon.Sdk.Am +{ + public interface IAudioController + { + Result SetExpectedMasterVolume(float mainAppletVolume, float libraryAppletVolume); + Result GetMainAppletExpectedMasterVolume(out float mainAppletVolume); + Result GetLibraryAppletExpectedMasterVolume(out float libraryAppletVolume); + Result ChangeMainAppletMasterVolume(float volume, ulong value); + Result SetTransparentVolumeRate(float volume); + } +} diff --git a/src/Ryujinx.Horizon/Sdk/Am/ILibraryAppletProxy.cs b/src/Ryujinx.Horizon/Sdk/Am/ILibraryAppletProxy.cs index 869edcd0d0..0efca6d2f2 100644 --- a/src/Ryujinx.Horizon/Sdk/Am/ILibraryAppletProxy.cs +++ b/src/Ryujinx.Horizon/Sdk/Am/ILibraryAppletProxy.cs @@ -6,8 +6,8 @@ namespace Ryujinx.Horizon.Sdk.Am { Result GetCommonStateGetter(out ICommonStateGetter commonStateGetter); Result GetSelfController(out ISelfController selfController); - Result GetWindowController(); - Result GetAudioController(); + Result GetWindowController(out IWindowController windowController); + Result GetAudioController(out IAudioController audioController); Result GetDisplayController(); Result GetProcessWindingController(); Result GetLibraryAppletCreator(); diff --git a/src/Ryujinx.Horizon/Sdk/Am/IOverlayAppletProxy.cs b/src/Ryujinx.Horizon/Sdk/Am/IOverlayAppletProxy.cs index cc79229d2c..7f06323212 100644 --- a/src/Ryujinx.Horizon/Sdk/Am/IOverlayAppletProxy.cs +++ b/src/Ryujinx.Horizon/Sdk/Am/IOverlayAppletProxy.cs @@ -6,8 +6,8 @@ namespace Ryujinx.Horizon.Sdk.Am { Result GetCommonStateGetter(out ICommonStateGetter commonStateGetter); Result GetSelfController(out ISelfController selfController); - Result GetWindowController(); - Result GetAudioController(); + Result GetWindowController(out IWindowController windowController); + Result GetAudioController(out IAudioController audioController); Result GetDisplayController(); Result GetProcessWindingController(); Result GetLibraryAppletCreator(); diff --git a/src/Ryujinx.Horizon/Sdk/Am/ISystemAppletProxy.cs b/src/Ryujinx.Horizon/Sdk/Am/ISystemAppletProxy.cs index 8c2fd7e0d4..a0d632c3bf 100644 --- a/src/Ryujinx.Horizon/Sdk/Am/ISystemAppletProxy.cs +++ b/src/Ryujinx.Horizon/Sdk/Am/ISystemAppletProxy.cs @@ -6,8 +6,8 @@ namespace Ryujinx.Horizon.Sdk.Am { Result GetCommonStateGetter(out ICommonStateGetter commonStateGetter); Result GetSelfController(out ISelfController selfController); - Result GetWindowController(); - Result GetAudioController(); + Result GetWindowController(out IWindowController windowController); + Result GetAudioController(out IAudioController audioController); Result GetDisplayController(); Result GetProcessWindingController(); Result GetLibraryAppletCreator(); diff --git a/src/Ryujinx.Horizon/Sdk/Am/IWindowController.cs b/src/Ryujinx.Horizon/Sdk/Am/IWindowController.cs new file mode 100644 index 0000000000..82c7a2002e --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/Am/IWindowController.cs @@ -0,0 +1,17 @@ +using Ryujinx.Horizon.Common; +using System; + +namespace Ryujinx.Horizon.Sdk.Am +{ + public interface IWindowController + { + Result CreateWindow(); + Result GetAppletResourceUserId(); + Result GetAppletResourceUserIdOfCallerApplet(); + Result AcquireForegroundRights(); + Result ReleaseForegroundRights(); + Result RejectToChangeIntoBackground(); + Result SetAppletWindowVisibility(bool visibility); + Result SetAppletGpuTimeSlice(Int64 gpuTime); + } +}