aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs')
-rw-r--r--src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs b/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs
index 68fc5e75..5d3f20f4 100644
--- a/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs
+++ b/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Threading;
@@ -21,11 +22,11 @@ namespace Ryujinx.Memory.Tracking
private readonly ulong Granularity;
private readonly ulong Size;
- private ConcurrentBitmap _dirtyBitmap;
+ private readonly ConcurrentBitmap _dirtyBitmap;
private int _sequenceNumber;
- private BitMap _sequenceNumberBitmap;
- private BitMap _dirtyCheckedBitmap;
+ private readonly BitMap _sequenceNumberBitmap;
+ private readonly BitMap _dirtyCheckedBitmap;
private int _uncheckedHandles;
public bool Dirty { get; private set; } = true;
@@ -54,7 +55,7 @@ namespace Ryujinx.Memory.Tracking
// It is assumed that the provided handles do not overlap, in order, are on page boundaries,
// and don't extend past the requested range.
- foreach (RegionHandle handle in handles)
+ foreach (RegionHandle handle in handles.Cast<RegionHandle>())
{
int startIndex = (int)((handle.RealAddress - address) / granularity);
@@ -406,6 +407,8 @@ namespace Ryujinx.Memory.Tracking
public void Dispose()
{
+ GC.SuppressFinalize(this);
+
foreach (var handle in _handles)
{
handle.Dispose();