From be73db7bebc51232d4168a7f660cf0aff5ab9f0c Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Mon, 29 Jun 2020 17:24:56 +0300 Subject: [PATCH] Dispose the renderer before detaching visuals from the tree (perf) See https://github.com/AvaloniaUI/Avalonia/issues/3622 --- src/Avalonia.Controls/TopLevel.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 6c3a2d4a03..f058942116 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -340,6 +340,9 @@ namespace Avalonia.Controls _globalStyles.GlobalStylesRemoved -= ((IStyleHost)this).StylesRemoved; } + Renderer?.Dispose(); + Renderer = null; + var logicalArgs = new LogicalTreeAttachmentEventArgs(this, this, null); ((ILogical)this).NotifyDetachedFromLogicalTree(logicalArgs); @@ -349,8 +352,7 @@ namespace Avalonia.Controls (this as IInputRoot).MouseDevice?.TopLevelClosed(this); PlatformImpl = null; OnClosed(EventArgs.Empty); - Renderer?.Dispose(); - Renderer = null; + LayoutManager?.Dispose(); }