Просмотр исходного кода

Fix NRE when MemoryUnmappedHandler is called for a destroyed channel (#4285)

gdkchan 3 лет назад
Родитель
Сommit
cd3a15aea5
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      Ryujinx.Graphics.Gpu/GpuChannel.cs

+ 4 - 2
Ryujinx.Graphics.Gpu/GpuChannel.cs

@@ -73,7 +73,7 @@ namespace Ryujinx.Graphics.Gpu
 
 
             // Since the memory manager changed, make sure we will get pools from addresses of the new memory manager.
             // Since the memory manager changed, make sure we will get pools from addresses of the new memory manager.
             TextureManager.ReloadPools();
             TextureManager.ReloadPools();
-            MemoryManager.Physical.BufferCache.QueuePrune();
+            memoryManager.Physical.BufferCache.QueuePrune();
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -84,7 +84,9 @@ namespace Ryujinx.Graphics.Gpu
         private void MemoryUnmappedHandler(object sender, UnmapEventArgs e)
         private void MemoryUnmappedHandler(object sender, UnmapEventArgs e)
         {
         {
             TextureManager.ReloadPools();
             TextureManager.ReloadPools();
-            MemoryManager.Physical.BufferCache.QueuePrune();
+
+            var memoryManager = Volatile.Read(ref _memoryManager);
+            memoryManager?.Physical.BufferCache.QueuePrune();
         }
         }
 
 
         /// <summary>
         /// <summary>