Browse Source

fix keeping disposed items in scene. This can cause application to freeze.

pull/2898/head
Dan Walmsley 7 years ago
parent
commit
cf9be70ffe
  1. 9
      src/Avalonia.Visuals/Rendering/DeferredRenderer.cs
  2. 2
      src/Avalonia.Visuals/Rendering/SceneGraph/Scene.cs

9
src/Avalonia.Visuals/Rendering/DeferredRenderer.cs

@ -354,9 +354,12 @@ namespace Avalonia.Rendering
foreach (var operation in node.DrawOperations)
{
_currentDraw = operation;
operation.Item.Render(context);
_currentDraw = null;
if (operation.Item != null)
{
_currentDraw = operation;
operation.Item.Render(context);
_currentDraw = null;
}
}
foreach (var child in node.Children)

2
src/Avalonia.Visuals/Rendering/SceneGraph/Scene.cs

@ -150,7 +150,7 @@ namespace Avalonia.Rendering.SceneGraph
index.Add(result.Visual, result);
foreach (var child in source.Children)
foreach (var child in source.Children.Where(x=>!x.Disposed))
{
result.AddChild(Clone((VisualNode)child, result, index));
}

Loading…
Cancel
Save