diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs index 4b716a07e1..f15322a6a7 100644 --- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs +++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs @@ -7,6 +7,7 @@ using Android.Views; using Avalonia.Android.Platform.SkiaPlatform; using Avalonia.Logging; using Avalonia.Platform; +using Java.Lang; namespace Avalonia.Android { @@ -69,6 +70,12 @@ namespace Avalonia.Android .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) { var surface = holder?.Surface; diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs index b4ec5ba0bb..00ae95abaf 100644 --- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs +++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs @@ -223,12 +223,17 @@ namespace Avalonia.Android.Platform.SkiaPlatform public override void SurfaceRedrawNeeded(ISurfaceHolder holder) { // 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))); 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; }