mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-09-19 19:37:09 +00:00
90 lines
2.6 KiB
C#
90 lines
2.6 KiB
C#
|
using Ryujinx.Horizon.Common;
|
|||
|
|
|||
|
namespace Ryujinx.Horizon.Sdk.OsTypes.Impl
|
|||
|
{
|
|||
|
static class InterProcessEvent
|
|||
|
{
|
|||
|
public static Result Create(ref InterProcessEventType ipEvent, EventClearMode clearMode)
|
|||
|
{
|
|||
|
Result result = InterProcessEventImpl.Create(out int writableHandle, out int readableHandle);
|
|||
|
|
|||
|
if (result != Result.Success)
|
|||
|
{
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
ipEvent = new InterProcessEventType(
|
|||
|
clearMode == EventClearMode.AutoClear,
|
|||
|
true,
|
|||
|
true,
|
|||
|
readableHandle,
|
|||
|
writableHandle);
|
|||
|
|
|||
|
return Result.Success;
|
|||
|
}
|
|||
|
|
|||
|
public static void Destroy(ref InterProcessEventType ipEvent)
|
|||
|
{
|
|||
|
ipEvent.State = InitializationState.NotInitialized;
|
|||
|
|
|||
|
if (ipEvent.ReadableHandleManaged)
|
|||
|
{
|
|||
|
if (ipEvent.ReadableHandle != 0)
|
|||
|
{
|
|||
|
InterProcessEventImpl.Close(ipEvent.ReadableHandle);
|
|||
|
}
|
|||
|
ipEvent.ReadableHandleManaged = false;
|
|||
|
}
|
|||
|
|
|||
|
if (ipEvent.WritableHandleManaged)
|
|||
|
{
|
|||
|
if (ipEvent.WritableHandle != 0)
|
|||
|
{
|
|||
|
InterProcessEventImpl.Close(ipEvent.WritableHandle);
|
|||
|
}
|
|||
|
ipEvent.WritableHandleManaged = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static int DetachReadableHandle(ref InterProcessEventType ipEvent)
|
|||
|
{
|
|||
|
int handle = ipEvent.ReadableHandle;
|
|||
|
|
|||
|
ipEvent.ReadableHandle = 0;
|
|||
|
ipEvent.ReadableHandleManaged = false;
|
|||
|
|
|||
|
return handle;
|
|||
|
}
|
|||
|
|
|||
|
public static int DetachWritableHandle(ref InterProcessEventType ipEvent)
|
|||
|
{
|
|||
|
int handle = ipEvent.WritableHandle;
|
|||
|
|
|||
|
ipEvent.WritableHandle = 0;
|
|||
|
ipEvent.WritableHandleManaged = false;
|
|||
|
|
|||
|
return handle;
|
|||
|
}
|
|||
|
|
|||
|
public static int GetReadableHandle(ref InterProcessEventType ipEvent)
|
|||
|
{
|
|||
|
return ipEvent.ReadableHandle;
|
|||
|
}
|
|||
|
|
|||
|
public static int GetWritableHandle(ref InterProcessEventType ipEvent)
|
|||
|
{
|
|||
|
return ipEvent.WritableHandle;
|
|||
|
}
|
|||
|
|
|||
|
public static void Signal(ref InterProcessEventType ipEvent)
|
|||
|
{
|
|||
|
InterProcessEventImpl.Signal(ipEvent.WritableHandle);
|
|||
|
}
|
|||
|
|
|||
|
public static void Clear(ref InterProcessEventType ipEvent)
|
|||
|
{
|
|||
|
InterProcessEventImpl.Clear(ipEvent.ReadableHandle == 0 ? ipEvent.WritableHandle : ipEvent.ReadableHandle);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|