Browse Source

Compositor: fix initial dirty rect with scaling < 1

pull/11755/head
Julien Lebosquain 3 years ago
parent
commit
5cc9553482
No known key found for this signature in database GPG Key ID: 1833CAD10ACC46FD
  1. 9
      src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs

9
src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs

@ -159,14 +159,15 @@ namespace Avalonia.Rendering.Composition.Server
_redrawRequested = false;
using (var targetContext = _renderTarget.CreateDrawingContext())
{
var layerSize = Size * Scaling;
var size = Size;
var layerSize = size * Scaling;
if (layerSize != _layerSize || _layer == null || _layer.IsCorrupted)
{
_layer?.Dispose();
_layer = null;
_layer = targetContext.CreateLayer(Size);
_layer = targetContext.CreateLayer(size);
_layerSize = layerSize;
_dirtyRect = new Rect(0, 0, layerSize.Width, layerSize.Height);
_dirtyRect = new Rect(0, 0, size.Width, size.Height);
}
if (_dirtyRect.Width != 0 || _dirtyRect.Height != 0)
@ -187,7 +188,7 @@ namespace Avalonia.Rendering.Composition.Server
else
targetContext.DrawBitmap(_layer, 1,
new Rect(_layerSize),
new Rect(Size));
new Rect(size));
if (DebugOverlays != RendererDebugOverlays.None)
{

Loading…
Cancel
Save