mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-12-24 12:56:03 +00:00
Make Counter<T> finalizable
Most certainly quite an odd use case.
This commit is contained in:
parent
60e56f3efe
commit
adb1dac60b
1 changed files with 33 additions and 13 deletions
|
@ -41,6 +41,39 @@ namespace ARMeilleure.Common
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Releases all resources used by the <see cref="Counter{T}"/> instance.
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Releases all unmanaged and optionally managed resources used by the <see cref="Counter{T}"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="disposing"><see langword="true"/> to dispose managed resources also; otherwise just unmanaged resouces</param>
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (!_disposed)
|
||||
{
|
||||
// The index into the EntryTable is essentially an unmanaged resource since we allocate and free the
|
||||
// resource ourselves.
|
||||
_countTable.Free(_index);
|
||||
|
||||
_disposed = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Frees resources used by <see cref="Counter{T}"/> instance.
|
||||
/// </summary>
|
||||
~Counter()
|
||||
{
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tries to create a <see cref="Counter{T}"/> instance from the specified <see cref="EntryTable{T}"/> instance.
|
||||
/// </summary>
|
||||
|
@ -77,18 +110,5 @@ namespace ARMeilleure.Common
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Releases all resources used by the <see cref="Counter{T}"/> instance.
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
if (!_disposed)
|
||||
{
|
||||
_countTable.Free(_index);
|
||||
|
||||
_disposed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue