aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Memory/Tracking
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Memory/Tracking')
-rw-r--r--Ryujinx.Memory/Tracking/RegionHandle.cs7
1 files changed, 3 insertions, 4 deletions
diff --git a/Ryujinx.Memory/Tracking/RegionHandle.cs b/Ryujinx.Memory/Tracking/RegionHandle.cs
index 5ecd53a2..b30dcbc2 100644
--- a/Ryujinx.Memory/Tracking/RegionHandle.cs
+++ b/Ryujinx.Memory/Tracking/RegionHandle.cs
@@ -144,9 +144,9 @@ namespace Ryujinx.Memory.Tracking
{
lock (_preActionLock)
{
- _preAction?.Invoke(address, size);
+ RegionSignal action = Interlocked.Exchange(ref _preAction, null);
- _preAction = null;
+ action?.Invoke(address, size);
}
}
finally
@@ -252,8 +252,7 @@ namespace Ryujinx.Memory.Tracking
lock (_preActionLock)
{
- RegionSignal lastAction = _preAction;
- _preAction = action;
+ RegionSignal lastAction = Interlocked.Exchange(ref _preAction, action);
if (lastAction == null && action != lastAction)
{