Browse Source
Merge pull request #8686 from AvaloniaUI/android-composition
Enable android composition renderer
pull/8668/head
Max Katz
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
19 additions and
5 deletions
-
src/Android/Avalonia.Android/AndroidPlatform.cs
-
src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs
|
|
|
@ -8,7 +8,8 @@ using Avalonia.Input.Platform; |
|
|
|
using Avalonia.OpenGL.Egl; |
|
|
|
using Avalonia.Platform; |
|
|
|
using Avalonia.Rendering; |
|
|
|
using Avalonia.Skia; |
|
|
|
using Avalonia.Rendering.Composition; |
|
|
|
using Avalonia.OpenGL; |
|
|
|
|
|
|
|
namespace Avalonia |
|
|
|
{ |
|
|
|
@ -42,6 +43,8 @@ namespace Avalonia.Android |
|
|
|
|
|
|
|
public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(500); |
|
|
|
|
|
|
|
internal static Compositor Compositor { get; private set; } |
|
|
|
|
|
|
|
public static void Initialize(AndroidPlatformOptions options) |
|
|
|
{ |
|
|
|
Options = options; |
|
|
|
@ -62,12 +65,20 @@ namespace Avalonia.Android |
|
|
|
{ |
|
|
|
EglPlatformOpenGlInterface.TryInitialize(); |
|
|
|
} |
|
|
|
|
|
|
|
if (options.UseCompositor) |
|
|
|
{ |
|
|
|
Compositor = new Compositor( |
|
|
|
AvaloniaLocator.Current.GetRequiredService<IRenderLoop>(), |
|
|
|
AvaloniaLocator.Current.GetService<IPlatformOpenGlInterface>()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed class AndroidPlatformOptions |
|
|
|
{ |
|
|
|
public bool UseDeferredRendering { get; set; } = true; |
|
|
|
public bool UseDeferredRendering { get; set; } = false; |
|
|
|
public bool UseGpu { get; set; } = true; |
|
|
|
public bool UseCompositor { get; set; } = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -19,6 +19,7 @@ using Avalonia.OpenGL.Surfaces; |
|
|
|
using Avalonia.Platform; |
|
|
|
using Avalonia.Platform.Storage; |
|
|
|
using Avalonia.Rendering; |
|
|
|
using Avalonia.Rendering.Composition; |
|
|
|
|
|
|
|
namespace Avalonia.Android.Platform.SkiaPlatform |
|
|
|
{ |
|
|
|
@ -84,9 +85,11 @@ namespace Avalonia.Android.Platform.SkiaPlatform |
|
|
|
public IEnumerable<object> Surfaces => new object[] { _gl, _framebuffer, Handle }; |
|
|
|
|
|
|
|
public IRenderer CreateRenderer(IRenderRoot root) => |
|
|
|
AndroidPlatform.Options.UseDeferredRendering |
|
|
|
? new DeferredRenderer(root, AvaloniaLocator.Current.GetService<IRenderLoop>()) { RenderOnlyOnRenderThread = true } |
|
|
|
: new ImmediateRenderer(root); |
|
|
|
AndroidPlatform.Options.UseCompositor |
|
|
|
? new CompositingRenderer(root, AndroidPlatform.Compositor) { DrawFps = true } |
|
|
|
: AndroidPlatform.Options.UseDeferredRendering |
|
|
|
? new DeferredRenderer(root, AvaloniaLocator.Current.GetRequiredService<IRenderLoop>()) { RenderOnlyOnRenderThread = true } |
|
|
|
: new ImmediateRenderer(root); |
|
|
|
|
|
|
|
public virtual void Hide() |
|
|
|
{ |
|
|
|
|