diff --git a/src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs b/src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs index 44c8f66bb3..133e19c02d 100644 --- a/src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs +++ b/src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs @@ -78,13 +78,19 @@ interface IRenderDataItem bool HitTest(Point p); } -class RenderDataCustomNode : IRenderDataItem +class RenderDataCustomNode : IRenderDataItem, IDisposable { public ICustomDrawOperation? Operation { get; set; } public bool HitTest(Point p) => Operation?.HitTest(p) ?? false; public void Invoke(ref RenderDataNodeRenderContext context) => Operation?.Render(new(context.Context, false)); public Rect? Bounds => Operation?.Bounds; + + public void Dispose() + { + Operation?.Dispose(); + Operation = null; + } } abstract class RenderDataPushNode : IRenderDataItem, IDisposable