aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs')
-rw-r--r--src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs b/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs
new file mode 100644
index 00000000..843a9acd
--- /dev/null
+++ b/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs
@@ -0,0 +1,43 @@
+using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Sdk.Sm;
+using System;
+
+namespace Ryujinx.Horizon.Sdk.Lbl
+{
+ public class LblApi : IDisposable
+ {
+ private const string LblName = "lbl";
+
+ private int _sessionHandle;
+
+ public LblApi()
+ {
+ using var smApi = new SmApi();
+
+ smApi.Initialize();
+ smApi.GetServiceHandle(out _sessionHandle, ServiceName.Encode(LblName)).AbortOnFailure();
+ }
+
+ public Result EnableVrMode()
+ {
+ return ServiceUtil.SendRequest(out _, _sessionHandle, 26, sendPid: false, ReadOnlySpan<byte>.Empty);
+ }
+
+ public Result DisableVrMode()
+ {
+ return ServiceUtil.SendRequest(out _, _sessionHandle, 27, sendPid: false, ReadOnlySpan<byte>.Empty);
+ }
+
+ public void Dispose()
+ {
+ if (_sessionHandle != 0)
+ {
+ HorizonStatic.Syscall.CloseHandle(_sessionHandle);
+
+ _sessionHandle = 0;
+ }
+
+ GC.SuppressFinalize(this);
+ }
+ }
+}