2021-06-29 13:37:13 -04:00
|
|
|
|
using System;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
|
|
|
|
|
namespace Ryujinx.HLE.HOS.Services
|
|
|
|
|
{
|
|
|
|
|
abstract class DisposableIpcService : IpcService, IDisposable
|
|
|
|
|
{
|
|
|
|
|
private int _disposeState;
|
|
|
|
|
|
2022-02-19 09:29:11 -05:00
|
|
|
|
public DisposableIpcService(ServerBase server = null) : base(server) { }
|
|
|
|
|
|
2021-06-29 13:37:13 -04:00
|
|
|
|
protected abstract void Dispose(bool isDisposing);
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
if (Interlocked.CompareExchange(ref _disposeState, 1, 0) == 0)
|
|
|
|
|
{
|
|
|
|
|
Dispose(true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|