// ----------------------------------------------------------------------- // // Copyright 2013 MIT Licence. See licence.md for more information. // // ----------------------------------------------------------------------- namespace Perspex.Rendering { using System; using System.Reactive; using System.Reactive.Subjects; /// /// Schedules the rendering of a tree. /// public class RenderManager : IRenderManager { private Subject renderNeeded = new Subject(); private bool renderQueued; /// /// Gets an observable that is fired whenever a render is required. /// public IObservable RenderNeeded { get { return this.renderNeeded; } } /// /// Gets a valuue indicating whether a render is queued. /// public bool RenderQueued { get { return this.renderQueued; } } /// /// Invalidates the render for the specified visual and raises . /// /// The visual. public void InvalidateRender(IVisual visual) { if (!this.renderQueued) { this.renderNeeded.OnNext(Unit.Default); this.renderQueued = true; } } /// /// Called when rendering is finished. /// public void RenderFinished() { this.renderQueued = false; } } }