Browse Source

Fix flicker on resize under D2D.

Still getting a "rubber banding" effect that needs to be fixed though.
pull/1202/head
Steven Kirk 9 years ago
parent
commit
abe47da717
  1. 48
      src/Avalonia.Visuals/Rendering/DeferredRenderer.cs

48
src/Avalonia.Visuals/Rendering/DeferredRenderer.cs

@ -185,36 +185,40 @@ namespace Avalonia.Rendering
try
{
using (var context = _renderTarget.CreateDrawingContext(this))
if (scene != null && scene.Size != Size.Empty)
{
if (scene != null && scene.Size != Size.Empty)
IDrawingContextImpl context = null;
if (scene.Generation != _lastSceneId)
{
if (scene.Generation != _lastSceneId)
{
_layers.Update(scene, context);
context = _renderTarget.CreateDrawingContext(this);
_layers.Update(scene, context);
RenderToLayers(scene);
RenderToLayers(scene);
if (DebugFramesPath != null)
{
SaveDebugFrames(scene.Generation);
}
if (DebugFramesPath != null)
{
SaveDebugFrames(scene.Generation);
}
_lastSceneId = scene.Generation;
_lastSceneId = scene.Generation;
composite = true;
}
composite = true;
}
if (renderOverlay)
{
RenderOverlay(scene, context);
RenderComposite(scene, context);
}
else if (composite)
{
RenderComposite(scene, context);
}
if (renderOverlay)
{
context = context ?? _renderTarget.CreateDrawingContext(this);
RenderOverlay(scene, context);
RenderComposite(scene, context);
}
else if (composite)
{
context = context ?? _renderTarget.CreateDrawingContext(this);
RenderComposite(scene, context);
}
context?.Dispose();
}
}
catch (RenderTargetCorruptedException ex)

Loading…
Cancel
Save