Browse Source

Reduce allocations

pull/3875/head
Nikita Tsukanov 6 years ago
parent
commit
07288d2087
  1. 4
      src/Avalonia.Visuals/Rendering/DeferredRenderer.cs

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

@ -35,6 +35,7 @@ namespace Avalonia.Rendering
private IRef<IDrawOperation> _currentDraw;
private readonly IDeferredRendererLock _lock;
private readonly object _sceneLock = new object();
private readonly Action _updateSceneIfNeededDelegate;
/// <summary>
/// Initializes a new instance of the <see cref="DeferredRenderer"/> class.
@ -59,6 +60,7 @@ namespace Avalonia.Rendering
Layers = new RenderLayers();
_renderLoop = renderLoop;
_lock = rendererLock ?? new ManagedDeferredRendererLock();
_updateSceneIfNeededDelegate = UpdateSceneIfNeeded;
}
/// <summary>
@ -336,7 +338,7 @@ namespace Avalonia.Rendering
// So we are scheduling an update call so UI thread could prepare a scene before
// the next render timer tick
if (!recursiveCall && !isUiThread)
Dispatcher.UIThread.InvokeAsync(UpdateSceneIfNeeded, DispatcherPriority.Render);
Dispatcher.UIThread.Post(_updateSceneIfNeededDelegate, DispatcherPriority.Render);
// Indicate that we have updated the layers
return (sceneRef.Clone(), true);

Loading…
Cancel
Save