diff --git a/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs b/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs
index 40be0055d3..a268eff78a 100644
--- a/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs
+++ b/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs
@@ -144,7 +144,7 @@ namespace Avalonia.Rendering
var t = (IRenderLoopTask)this;
if(t.NeedsUpdate)
UpdateScene();
- t.Render();
+ Render(true);
}
///
@@ -176,12 +176,7 @@ namespace Avalonia.Rendering
void IRenderLoopTask.Update(TimeSpan time) => UpdateScene();
- void IRenderLoopTask.Render()
- {
- using (var l = _lock.TryLock())
- if (l != null)
- Render();
- }
+ void IRenderLoopTask.Render() => Render(false);
///
Size IVisualBrushRenderer.GetRenderTargetSize(IVisualBrush brush)
@@ -202,17 +197,19 @@ namespace Avalonia.Rendering
internal void UnitTestUpdateScene() => UpdateScene();
- internal void UnitTestRender() => Render(_scene.Item);
+ internal void UnitTestRender() => Render(_scene.Item, false);
- private void Render()
+ private void Render(bool forceComposite)
{
- using (var scene = _scene?.Clone())
- {
- Render(scene?.Item);
- }
+ using (var l = _lock.TryLock())
+ if (l != null)
+ using (var scene = _scene?.Clone())
+ {
+ Render(scene?.Item, forceComposite);
+ }
}
- private void Render(Scene scene)
+ private void Render(Scene scene, bool forceComposite)
{
bool renderOverlay = DrawDirtyRects || DrawFps;
bool composite = false;
@@ -256,7 +253,7 @@ namespace Avalonia.Rendering
RenderOverlay(scene, context);
RenderComposite(scene, context);
}
- else if (composite)
+ else if (composite || forceComposite)
{
context = context ?? RenderTarget.CreateDrawingContext(this);
RenderComposite(scene, context);