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 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) context = _renderTarget.CreateDrawingContext(this);
{ _layers.Update(scene, context);
_layers.Update(scene, context);
RenderToLayers(scene); RenderToLayers(scene);
if (DebugFramesPath != null) if (DebugFramesPath != null)
{ {
SaveDebugFrames(scene.Generation); SaveDebugFrames(scene.Generation);
} }
_lastSceneId = scene.Generation; _lastSceneId = scene.Generation;
composite = true; composite = true;
} }
if (renderOverlay) if (renderOverlay)
{ {
RenderOverlay(scene, context); context = context ?? _renderTarget.CreateDrawingContext(this);
RenderComposite(scene, context); RenderOverlay(scene, context);
} RenderComposite(scene, context);
else if (composite) }
{ else if (composite)
RenderComposite(scene, context); {
} context = context ?? _renderTarget.CreateDrawingContext(this);
RenderComposite(scene, context);
} }
context?.Dispose();
} }
} }
catch (RenderTargetCorruptedException ex) catch (RenderTargetCorruptedException ex)

Loading…
Cancel
Save