|
|
@@ -113,6 +113,11 @@ namespace Avalonia.Rendering.SceneGraph
|
|
|
/// <param name="child">The child to add.</param>
|
|
|
public void AddChild(IVisualNode child)
|
|
|
{
|
|
|
+ if (child.Disposed)
|
|
|
+ {
|
|
|
+ throw new ObjectDisposedException("Visual node for {node.Visual}");
|
|
|
+ }
|
|
|
+
|
|
|
EnsureChildrenCreated();
|
|
|
_children.Add(child);
|
|
|
}
|
|
|
@@ -135,7 +140,6 @@ namespace Avalonia.Rendering.SceneGraph
|
|
|
{
|
|
|
EnsureChildrenCreated();
|
|
|
_children.Remove(child);
|
|
|
- child.Dispose();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -145,13 +149,13 @@ namespace Avalonia.Rendering.SceneGraph
|
|
|
/// <param name="node">The child to add.</param>
|
|
|
public void ReplaceChild(int index, IVisualNode node)
|
|
|
{
|
|
|
- EnsureChildrenCreated();
|
|
|
- var old = _children[index];
|
|
|
- _children[index] = node;
|
|
|
- if (node != old)
|
|
|
+ if (node.Disposed)
|
|
|
{
|
|
|
- old.Dispose();
|
|
|
+ throw new ObjectDisposedException("Visual node for {node.Visual}");
|
|
|
}
|
|
|
+
|
|
|
+ EnsureChildrenCreated();
|
|
|
+ _children[index] = node;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -332,13 +336,11 @@ namespace Avalonia.Rendering.SceneGraph
|
|
|
_drawOperationsCloned = false;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public bool Disposed { get; }
|
|
|
|
|
|
public void Dispose()
|
|
|
{
|
|
|
- foreach (var child in Children)
|
|
|
- {
|
|
|
- child.Dispose();
|
|
|
- }
|
|
|
_drawOperationsRefCounter?.Dispose();
|
|
|
}
|
|
|
|