/ src / Ryujinx.Cpu / VirtualMemoryManagerRefCountedBase.cs
VirtualMemoryManagerRefCountedBase.cs
 1  using Ryujinx.Memory;
 2  using System.Diagnostics;
 3  using System.Threading;
 4  
 5  namespace Ryujinx.Cpu
 6  {
 7      public abstract class VirtualMemoryManagerRefCountedBase : VirtualMemoryManagerBase, IRefCounted
 8      {
 9          private int _referenceCount;
10  
11          public void IncrementReferenceCount()
12          {
13              int newRefCount = Interlocked.Increment(ref _referenceCount);
14  
15              Debug.Assert(newRefCount >= 1);
16          }
17  
18          public void DecrementReferenceCount()
19          {
20              int newRefCount = Interlocked.Decrement(ref _referenceCount);
21  
22              Debug.Assert(newRefCount >= 0);
23  
24              if (newRefCount == 0)
25              {
26                  Destroy();
27              }
28          }
29  
30          protected abstract void Destroy();
31      }
32  }