Files
ryujinx/src/Ryujinx.HLE/HOS/Services/Apm/IManager.cs
Aaron Robinson c76f65904d Enable full trimming
Enables full trimming for Ryujinx, and in doing so removes many usages of reflection, namely:

IUserService no longer uses reflection to find possible service types, and now has a generated switch based on name

Ryujinx.HLE.HOS.Tamper no longer uses dynamic to do operations, now using INumber<T> and friends

Cmif and Tipc commands in Ryujinx.HLE.HOS.Services no longer get resolved via reflection and are now done via generated virtual methods

Fix things broken by trimming (profile panel, DiscordRPC)
2026-03-18 14:50:17 -05:00

44 lines
1.3 KiB
C#

namespace Ryujinx.HLE.HOS.Services.Apm
{
abstract partial class IManager : IpcService
{
public IManager(ServiceCtx context) { }
protected abstract ResultCode OpenSession(out SessionServer sessionServer);
protected abstract PerformanceMode GetPerformanceMode();
protected abstract bool IsCpuOverclockEnabled();
[CommandCmif(0)]
// OpenSession() -> object<nn::apm::ISession>
public ResultCode OpenSession(ServiceCtx context)
{
ResultCode resultCode = OpenSession(out SessionServer sessionServer);
if (resultCode == ResultCode.Success)
{
MakeObject(context, sessionServer);
}
return resultCode;
}
[CommandCmif(1)]
// GetPerformanceMode() -> nn::apm::PerformanceMode
public ResultCode GetPerformanceMode(ServiceCtx context)
{
context.ResponseData.Write((uint)GetPerformanceMode());
return ResultCode.Success;
}
[CommandCmif(6)] // 7.0.0+
// IsCpuOverclockEnabled() -> bool
public ResultCode IsCpuOverclockEnabled(ServiceCtx context)
{
context.ResponseData.Write(IsCpuOverclockEnabled());
return ResultCode.Success;
}
}
}