mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2025-08-11 16:02:33 -07:00
Horizon: Impl Prepo, Fixes bugs, Clean things (#4220)
* Horizon: Impl Prepo, Fixes bugs, Clean things * remove ToArray() * resultCode > status * Remove old services * Addresses gdkchan's comments and more cleanup * Addresses Gdkchan's feedback 2 * Reorganize services, make sure service are loaded before guest Co-Authored-By: gdkchan <5624669+gdkchan@users.noreply.github.com> * Create interfaces for lm and sm Co-authored-by: gdkchan <5624669+gdkchan@users.noreply.github.com>
This commit is contained in:
@@ -7,16 +7,18 @@ namespace Ryujinx.Horizon.Sdk.Sm
|
||||
{
|
||||
class SmApi
|
||||
{
|
||||
private const string SmName = "sm:";
|
||||
|
||||
private int _portHandle;
|
||||
|
||||
public Result Initialize()
|
||||
{
|
||||
Result result = HorizonStatic.Syscall.ConnectToNamedPort(out int portHandle, "sm:");
|
||||
Result result = HorizonStatic.Syscall.ConnectToNamedPort(out int portHandle, SmName);
|
||||
|
||||
while (result == KernelResult.NotFound)
|
||||
{
|
||||
HorizonStatic.Syscall.SleepThread(50000000L);
|
||||
result = HorizonStatic.Syscall.ConnectToNamedPort(out portHandle, "sm:");
|
||||
result = HorizonStatic.Syscall.ConnectToNamedPort(out portHandle, SmName);
|
||||
}
|
||||
|
||||
if (result.IsFailure)
|
||||
@@ -33,7 +35,7 @@ namespace Ryujinx.Horizon.Sdk.Sm
|
||||
{
|
||||
Span<byte> data = stackalloc byte[8];
|
||||
|
||||
SpanWriter writer = new SpanWriter(data);
|
||||
SpanWriter writer = new(data);
|
||||
|
||||
writer.Write(0UL);
|
||||
|
||||
@@ -44,7 +46,7 @@ namespace Ryujinx.Horizon.Sdk.Sm
|
||||
{
|
||||
Span<byte> data = stackalloc byte[8];
|
||||
|
||||
SpanWriter writer = new SpanWriter(data);
|
||||
SpanWriter writer = new(data);
|
||||
|
||||
writer.Write(name);
|
||||
|
||||
@@ -53,10 +55,12 @@ namespace Ryujinx.Horizon.Sdk.Sm
|
||||
if (result.IsFailure)
|
||||
{
|
||||
handle = 0;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
handle = response.MoveHandles[0];
|
||||
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
@@ -64,7 +68,7 @@ namespace Ryujinx.Horizon.Sdk.Sm
|
||||
{
|
||||
Span<byte> data = stackalloc byte[16];
|
||||
|
||||
SpanWriter writer = new SpanWriter(data);
|
||||
SpanWriter writer = new(data);
|
||||
|
||||
writer.Write(name);
|
||||
writer.Write(isLight ? 1 : 0);
|
||||
@@ -75,10 +79,12 @@ namespace Ryujinx.Horizon.Sdk.Sm
|
||||
if (result.IsFailure)
|
||||
{
|
||||
handle = 0;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
handle = response.MoveHandles[0];
|
||||
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
@@ -86,7 +92,7 @@ namespace Ryujinx.Horizon.Sdk.Sm
|
||||
{
|
||||
Span<byte> data = stackalloc byte[8];
|
||||
|
||||
SpanWriter writer = new SpanWriter(data);
|
||||
SpanWriter writer = new(data);
|
||||
|
||||
writer.Write(name);
|
||||
|
||||
@@ -97,11 +103,11 @@ namespace Ryujinx.Horizon.Sdk.Sm
|
||||
{
|
||||
Span<byte> data = stackalloc byte[8];
|
||||
|
||||
SpanWriter writer = new SpanWriter(data);
|
||||
SpanWriter writer = new(data);
|
||||
|
||||
writer.Write(0UL);
|
||||
|
||||
return ServiceUtil.SendRequest(out _, _portHandle, 4, sendPid: true, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user