Browse Source

Implemented IDisposable for RenderDataCustomNode. (#15224)

pull/15242/head
nateglasser 2 years ago
committed by GitHub
parent
commit
0853939708
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 8
      src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs

8
src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs

@ -78,13 +78,19 @@ interface IRenderDataItem
bool HitTest(Point p); bool HitTest(Point p);
} }
class RenderDataCustomNode : IRenderDataItem class RenderDataCustomNode : IRenderDataItem, IDisposable
{ {
public ICustomDrawOperation? Operation { get; set; } public ICustomDrawOperation? Operation { get; set; }
public bool HitTest(Point p) => Operation?.HitTest(p) ?? false; public bool HitTest(Point p) => Operation?.HitTest(p) ?? false;
public void Invoke(ref RenderDataNodeRenderContext context) => Operation?.Render(new(context.Context, false)); public void Invoke(ref RenderDataNodeRenderContext context) => Operation?.Render(new(context.Context, false));
public Rect? Bounds => Operation?.Bounds; public Rect? Bounds => Operation?.Bounds;
public void Dispose()
{
Operation?.Dispose();
Operation = null;
}
} }
abstract class RenderDataPushNode : IRenderDataItem, IDisposable abstract class RenderDataPushNode : IRenderDataItem, IDisposable

Loading…
Cancel
Save