From d7a6f95c8b04f5ee0f56093924481807a318712c Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 4 Jun 2025 00:54:47 +0200 Subject: [PATCH] add comments --- src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs | 2 ++ src/Ryujinx.Memory/Tracking/MemoryTracking.cs | 1 + 2 files changed, 3 insertions(+) diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs index 1e712b542..ef027667e 100644 --- a/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs +++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs @@ -289,6 +289,7 @@ namespace Ryujinx.Graphics.Gpu.Memory { RangeItem[] overlaps = new RangeItem[1]; + // We use the non-span method here because keeping the lock will cause a deadlock. Lock.EnterReadLock(); OverlapResult result = FindOverlapsNonOverlapping(address, size, ref overlaps); Lock.ExitReadLock(); @@ -409,6 +410,7 @@ namespace Ryujinx.Graphics.Gpu.Memory } else { + // We use the non-span method here because the array is partially modified by the code, which would invalidate a span. rangeCount = FindOverlapsNonOverlapping(address, size, ref overlaps).Count; } Lock.ExitReadLock(); diff --git a/src/Ryujinx.Memory/Tracking/MemoryTracking.cs b/src/Ryujinx.Memory/Tracking/MemoryTracking.cs index bc69aea3d..7aecd7f4d 100644 --- a/src/Ryujinx.Memory/Tracking/MemoryTracking.cs +++ b/src/Ryujinx.Memory/Tracking/MemoryTracking.cs @@ -299,6 +299,7 @@ namespace Ryujinx.Memory.Tracking NonOverlappingRangeList regions = guest ? _guestVirtualRegions : _virtualRegions; ref RangeItem[] overlaps = ref ThreadStaticArray>.Get(); + // We use the non-span method here because keeping the lock will cause a deadlock. regions.Lock.EnterReadLock(); OverlapResult result = regions.FindOverlapsNonOverlapping(address, size, ref overlaps); regions.Lock.ExitReadLock();