Browse Source

Implement ISurfaceHolderCallback2 and handle SurfaceRedrawNeeded

pull/19045/head
Max Katz 1 year ago
parent
commit
c449c097cc
  1. 8
      src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs
  2. 8
      src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs

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

@ -10,7 +10,7 @@ using Avalonia.Platform;
namespace Avalonia.Android
{
internal abstract class InvalidationAwareSurfaceView : SurfaceView, ISurfaceHolderCallback, INativePlatformHandleSurface
internal abstract class InvalidationAwareSurfaceView : SurfaceView, ISurfaceHolderCallback2, INativePlatformHandleSurface
{
private IntPtr _nativeWindowHandle = IntPtr.Zero;
private PixelSize _size = new(1, 1);
@ -63,6 +63,12 @@ namespace Avalonia.Android
.Log(this, "InvalidationAwareSurfaceView Destroyed");
}
public virtual void SurfaceRedrawNeeded(ISurfaceHolder holder)
{
Logger.TryGet(LogEventLevel.Verbose, LogArea.AndroidPlatform)?
.Log(this, "InvalidationAwareSurfaceView RedrawNeeded");
}
private void CacheSurfaceProperties(ISurfaceHolder holder)
{
var surface = holder?.Surface;

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

@ -220,6 +220,14 @@ 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()
{
return true;

Loading…
Cancel
Save