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 }