private void Render(Scene scene) { bool renderOverlay = DrawDirtyRects || DrawFps; bool composite = false; if (RenderTarget == null) { RenderTarget = ((IRenderRoot)_root).CreateRenderTarget(); } if (renderOverlay) { _dirtyRectsDisplay.Tick(); } try { if (scene != null && scene.Size != Size.Empty) { IDrawingContextImpl context = null; if (scene.Generation != _lastSceneId) { context = RenderTarget.CreateDrawingContext(this); Layers.Update(scene, context); RenderToLayers(scene); if (DebugFramesPath != null) { SaveDebugFrames(scene.Generation); } _lastSceneId = scene.Generation; composite = true; } 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) { Logging.Logger.Information("Renderer", this, "Render target was corrupted. Exception: {0}", ex); RenderTarget?.Dispose(); RenderTarget = null; } }
internal void Render(bool forceComposite) { using (var l = _lock.TryLock()) { if (l == null) { return; } IDrawingContextImpl?context = null; try { try { var(scene, updated) = UpdateRenderLayersAndConsumeSceneIfNeeded(ref context); if (updated) { FpsTick(); } using (scene) { if (scene?.Item != null) { try { var overlay = DrawDirtyRects || DrawFps; if (DrawDirtyRects) { _dirtyRectsDisplay.Tick(); } if (overlay) { RenderOverlay(scene.Item, ref context); } if (updated || forceComposite || overlay) { RenderComposite(scene.Item, ref context); } } finally { scene.Item.MarkAsRendered(); } } } } finally { context?.Dispose(); } } catch (RenderTargetCorruptedException ex) { Logger.TryGet(LogEventLevel.Information, LogArea.Animations)?.Log(this, "Render target was corrupted. Exception: {0}", ex); RenderTarget?.Dispose(); RenderTarget = null; } } }
public void Dispose() { while (_states.Count != 0) { _states.Peek().Dispose(); } _impl.Dispose(); }
private void Render(bool forceComposite) { using (var l = _lock.TryLock()) { if (l == null) { return; } IDrawingContextImpl context = null; try { try { IDrawingContextImpl GetContext() { if (context != null) { return(context); } if (RenderTarget == null) { RenderTarget = ((IRenderRoot)_root).CreateRenderTarget(); } return(context = RenderTarget.CreateDrawingContext(this)); } var(scene, updated) = UpdateRenderLayersAndConsumeSceneIfNeeded(GetContext); using (scene) { var overlay = DrawDirtyRects || DrawFps; if (DrawDirtyRects) { _dirtyRectsDisplay.Tick(); } if (overlay) { RenderOverlay(scene.Item, GetContext()); } if (updated || forceComposite || overlay) { RenderComposite(scene.Item, GetContext()); } } } finally { context?.Dispose(); } } catch (RenderTargetCorruptedException ex) { Logging.Logger.Information("Renderer", this, "Render target was corrupted. Exception: {0}", ex); RenderTarget?.Dispose(); RenderTarget = null; } } }
public void Dispose() { while (_states.Count != 0) { _states.Peek().Dispose(); } StateStackPool.Push(_states); _states = null; TransformStackPool.Push(_transformContainers); _transformContainers = null; _impl.Dispose(); }
public void Dispose() => _impl.Dispose();
public void Dispose() { drawingContext.Dispose(); }