Browse Source

Handle SurfaceRedrawNeededAsync as well

pull/19045/head
Max Katz 1 year ago
parent
commit
3a3dc4e8fe
  1. 7
      src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs
  2. 9
      src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs

7
src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs

@ -7,6 +7,7 @@ using Android.Views;
using Avalonia.Android.Platform.SkiaPlatform; using Avalonia.Android.Platform.SkiaPlatform;
using Avalonia.Logging; using Avalonia.Logging;
using Avalonia.Platform; using Avalonia.Platform;
using Java.Lang;
namespace Avalonia.Android namespace Avalonia.Android
{ {
@ -69,6 +70,12 @@ namespace Avalonia.Android
.Log(this, "InvalidationAwareSurfaceView RedrawNeeded"); .Log(this, "InvalidationAwareSurfaceView RedrawNeeded");
} }
public virtual void SurfaceRedrawNeededAsync(ISurfaceHolder holder, IRunnable drawingFinished)
{
Logger.TryGet(LogEventLevel.Verbose, LogArea.AndroidPlatform)?
.Log(this, "InvalidationAwareSurfaceView RedrawNeededAsync");
}
private void CacheSurfaceProperties(ISurfaceHolder holder) private void CacheSurfaceProperties(ISurfaceHolder holder)
{ {
var surface = holder?.Surface; var surface = holder?.Surface;

9
src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs

@ -223,12 +223,17 @@ namespace Avalonia.Android.Platform.SkiaPlatform
public override void SurfaceRedrawNeeded(ISurfaceHolder holder) public override void SurfaceRedrawNeeded(ISurfaceHolder holder)
{ {
// Compositor Renderer handles Paint event in-sync, which is perfect for sync SurfaceRedrawNeeded // Compositor Renderer handles Paint event in-sync, which is perfect for sync SurfaceRedrawNeeded
// In the future we might to handle SurfaceRedrawNeededAsync as well.
_tl.Paint?.Invoke(new Rect(new Point(), Size.ToSize(Scaling))); _tl.Paint?.Invoke(new Rect(new Point(), Size.ToSize(Scaling)));
base.SurfaceRedrawNeeded(holder); base.SurfaceRedrawNeeded(holder);
} }
public sealed override bool OnCheckIsTextEditor() public override void SurfaceRedrawNeededAsync(ISurfaceHolder holder, IRunnable drawingFinished)
{
_tl.Compositor.RequestCompositionUpdate(drawingFinished.Run);
base.SurfaceRedrawNeededAsync(holder, drawingFinished);
}
public override bool OnCheckIsTextEditor()
{ {
return true; return true;
} }

Loading…
Cancel
Save