aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Memory/WritableRegion.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Memory/WritableRegion.cs')
-rw-r--r--src/Ryujinx.Memory/WritableRegion.cs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Ryujinx.Memory/WritableRegion.cs b/src/Ryujinx.Memory/WritableRegion.cs
index 666c8a99..2c21ef4e 100644
--- a/src/Ryujinx.Memory/WritableRegion.cs
+++ b/src/Ryujinx.Memory/WritableRegion.cs
@@ -1,4 +1,5 @@
using System;
+using System.Buffers;
namespace Ryujinx.Memory
{
@@ -6,6 +7,7 @@ namespace Ryujinx.Memory
{
private readonly IWritableBlock _block;
private readonly ulong _va;
+ private readonly IMemoryOwner<byte> _memoryOwner;
private readonly bool _tracked;
private bool NeedsWriteback => _block != null;
@@ -20,6 +22,12 @@ namespace Ryujinx.Memory
Memory = memory;
}
+ public WritableRegion(IWritableBlock block, ulong va, IMemoryOwner<byte> memoryOwner, bool tracked = false)
+ : this(block, va, memoryOwner.Memory, tracked)
+ {
+ _memoryOwner = memoryOwner;
+ }
+
public void Dispose()
{
if (NeedsWriteback)
@@ -33,6 +41,8 @@ namespace Ryujinx.Memory
_block.WriteUntracked(_va, Memory.Span);
}
}
+
+ _memoryOwner?.Dispose();
}
}
}