Ver código fonte

Catch ObjectDisposedException in ChunkRenderer

Equbuxu 3 anos atrás
pai
commit
99d434fc0e

+ 18 - 4
src/PixiEditor.ChangeableDocument/Rendering/ChunkRenderer.cs

@@ -11,13 +11,27 @@ public static class ChunkRenderer
     public static OneOf<Chunk, EmptyChunk> MergeWholeStructure(VecI chunkPos, ChunkResolution resolution, IReadOnlyFolder root)
     {
         using RenderingContext context = new();
-        return MergeFolderContents(context, chunkPos, resolution, root, new All());
+        try
+        {
+            return MergeFolderContents(context, chunkPos, resolution, root, new All());
+        }
+        catch (ObjectDisposedException)
+        {
+            return new EmptyChunk();
+        }
     }
 
     public static OneOf<Chunk, EmptyChunk> MergeChosenMembers(VecI chunkPos, ChunkResolution resolution, IReadOnlyFolder root, HashSet<Guid> members)
     {
         using RenderingContext context = new();
-        return MergeFolderContents(context, chunkPos, resolution, root, members);
+        try
+        {
+            return MergeFolderContents(context, chunkPos, resolution, root, members);
+        }
+        catch (ObjectDisposedException)
+        {
+            return new EmptyChunk();
+        }
     }
 
     private static OneOf<EmptyChunk, Chunk> RenderLayerWithMask
@@ -28,7 +42,7 @@ public static class ChunkRenderer
             !layer.IsVisible ||
             layer.Opacity == 0 ||
             (layer.Mask is not null && !layer.Mask.LatestOrCommittedChunkExists(chunkPos))
-            )
+        )
             return new EmptyChunk();
 
         context.UpdateFromMember(layer);
@@ -116,7 +130,7 @@ public static class ChunkRenderer
             folder.Opacity == 0 ||
             folder.Children.Count == 0 ||
             (folder.Mask is not null && folder.MaskIsVisible && !folder.Mask.LatestOrCommittedChunkExists(chunkPos))
-            )
+        )
             return new EmptyChunk();
 
         OneOf<Chunk, EmptyChunk> maybeContents = MergeFolderContents(context, chunkPos, resolution, folder, membersToMerge);