From fa7eb55902490d3de7ae4c663258c8937e76e681 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Mon, 29 May 2023 16:37:53 +0600 Subject: [PATCH] Flakiness? --- tests/Avalonia.RenderTests/TestBase.cs | 8 ++------ tests/Avalonia.UnitTests/CompositorTestServices.cs | 11 ++++++++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/tests/Avalonia.RenderTests/TestBase.cs b/tests/Avalonia.RenderTests/TestBase.cs index 4e4842e856..3e0ba7d2f6 100644 --- a/tests/Avalonia.RenderTests/TestBase.cs +++ b/tests/Avalonia.RenderTests/TestBase.cs @@ -107,7 +107,8 @@ namespace Avalonia.Direct2D1.RenderTests var timer = new ManualRenderTimer(); - var compositor = new Compositor(new RenderLoop(timer), null, true); + var compositor = new Compositor(new RenderLoop(timer), null, true, + new DispatcherCompositorScheduler(), true); using (var writableBitmap = factory.CreateWriteableBitmap(pixelSize, dpiVector, factory.DefaultPixelFormat, factory.DefaultAlphaFormat)) { var root = new TestRenderRoot(dpiVector.X / 96, null!); @@ -121,11 +122,6 @@ namespace Avalonia.Direct2D1.RenderTests Dispatcher.UIThread.RunJobs(); timer.TriggerTick(); } - - // Free pools - for (var c = 0; c < 11; c++) - foreach (var dp in Dispatcher.SnapshotTimersForUnitTests()) - dp.ForceFire(); writableBitmap.Save(compositedPath); } } diff --git a/tests/Avalonia.UnitTests/CompositorTestServices.cs b/tests/Avalonia.UnitTests/CompositorTestServices.cs index f1d41364e9..5fcfec0437 100644 --- a/tests/Avalonia.UnitTests/CompositorTestServices.cs +++ b/tests/Avalonia.UnitTests/CompositorTestServices.cs @@ -45,7 +45,8 @@ public class CompositorTestServices : IDisposable { AvaloniaLocator.CurrentMutable.Bind().ToConstant(Timer); - Compositor = new Compositor(new RenderLoop(Timer), null); + Compositor = new Compositor(new RenderLoop(Timer), null, + true, new DispatcherCompositorScheduler(), true); var impl = new TopLevelImpl(Compositor, size ?? new Size(1000, 1000)); TopLevel = new EmbeddableControlRoot(impl) { @@ -207,4 +208,12 @@ public class NullCompositorScheduler : ICompositorScheduler { } +} + +public class DispatcherCompositorScheduler : ICompositorScheduler +{ + public void CommitRequested(Compositor compositor) + { + Dispatcher.UIThread.Post(() => compositor.Commit(), DispatcherPriority.UiThreadRender); + } } \ No newline at end of file