diff --git a/src/Avalonia.Layout/LayoutManager.cs b/src/Avalonia.Layout/LayoutManager.cs index 792de774d1..fc988a8d6c 100644 --- a/src/Avalonia.Layout/LayoutManager.cs +++ b/src/Avalonia.Layout/LayoutManager.cs @@ -106,8 +106,6 @@ namespace Avalonia.Layout if (!_running) { - _running = true; - Stopwatch? stopwatch = null; const LogEventLevel timingLogLevel = LogEventLevel.Information; @@ -128,15 +126,24 @@ namespace Avalonia.Layout _toMeasure.BeginLoop(MaxPasses); _toArrange.BeginLoop(MaxPasses); - for (var pass = 0; pass < MaxPasses; ++pass) + try { - InnerLayoutPass(); + _running = true; - if (!RaiseEffectiveViewportChanged()) + for (var pass = 0; pass < MaxPasses; ++pass) { - break; + InnerLayoutPass(); + + if (!RaiseEffectiveViewportChanged()) + { + break; + } } } + finally + { + _running = false; + } _toMeasure.EndLoop(); _toArrange.EndLoop(); @@ -221,23 +228,16 @@ namespace Avalonia.Layout private void InnerLayoutPass() { - try + for (var pass = 0; pass < MaxPasses; ++pass) { - for (var pass = 0; pass < MaxPasses; ++pass) - { - ExecuteMeasurePass(); - ExecuteArrangePass(); + ExecuteMeasurePass(); + ExecuteArrangePass(); - if (_toMeasure.Count == 0) - { - break; - } + if (_toMeasure.Count == 0) + { + break; } } - finally - { - _running = false; - } } private void ExecuteMeasurePass() @@ -362,7 +362,7 @@ namespace Avalonia.Layout } } - return startCount != _toMeasure.Count + _toMeasure.Count; + return startCount != _toMeasure.Count + _toArrange.Count; } private Rect CalculateEffectiveViewport(IVisual control)