using Ryujinx.Horizon.Sdk.OsTypes; using System; using System.Threading; namespace Ryujinx.Horizon.Sdk.Arp.Detail { class ApplicationInstanceManager : IDisposable { private int _disposalState; public SystemEventType SystemEvent; public int EventHandle; public readonly ApplicationInstance[] Entries = new ApplicationInstance[2]; public ApplicationInstanceManager() { Os.CreateSystemEvent(out SystemEvent, EventClearMode.ManualClear, true).AbortOnFailure(); EventHandle = Os.GetReadableHandleOfSystemEvent(ref SystemEvent); } public void Dispose() { if (EventHandle != 0 && Interlocked.Exchange(ref _disposalState, 1) == 0) { Os.DestroySystemEvent(ref SystemEvent); } } } }