Browse Source

Flakiness?

pull/11556/head
Nikita Tsukanov 3 years ago
parent
commit
fa7eb55902
  1. 8
      tests/Avalonia.RenderTests/TestBase.cs
  2. 11
      tests/Avalonia.UnitTests/CompositorTestServices.cs

8
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);
}
}

11
tests/Avalonia.UnitTests/CompositorTestServices.cs

@ -45,7 +45,8 @@ public class CompositorTestServices : IDisposable
{
AvaloniaLocator.CurrentMutable.Bind<IRenderTimer>().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);
}
}
Loading…
Cancel
Save