Browse Source

Merge pull request #8706 from AvaloniaUI/fix-android-rendering

Fix composition rendering after render target was corrupted
pull/8710/head
Nikita Tsukanov 4 years ago
committed by GitHub
parent
commit
c005ca7bb8
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      src/Android/Avalonia.Android/AndroidPlatform.cs
  2. 7
      src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs

12
src/Android/Avalonia.Android/AndroidPlatform.cs

@ -17,10 +17,8 @@ namespace Avalonia
{
public static T UseAndroid<T>(this T builder) where T : AppBuilderBase<T>, new()
{
var options = AvaloniaLocator.Current.GetService<AndroidPlatformOptions>() ?? new AndroidPlatformOptions();
return builder
.UseWindowingSubsystem(() => AndroidPlatform.Initialize(options), "Android")
.UseWindowingSubsystem(() => AndroidPlatform.Initialize(), "Android")
.UseSkia();
}
}
@ -45,9 +43,9 @@ namespace Avalonia.Android
internal static Compositor Compositor { get; private set; }
public static void Initialize(AndroidPlatformOptions options)
public static void Initialize()
{
Options = options;
Options = AvaloniaLocator.Current.GetService<AndroidPlatformOptions>() ?? new AndroidPlatformOptions();
AvaloniaLocator.CurrentMutable
.Bind<IClipboard>().ToTransient<ClipboardImpl>()
@ -61,12 +59,12 @@ namespace Avalonia.Android
.Bind<IRenderLoop>().ToConstant(new RenderLoop())
.Bind<PlatformHotkeyConfiguration>().ToSingleton<PlatformHotkeyConfiguration>();
if (options.UseGpu)
if (Options.UseGpu)
{
EglPlatformOpenGlInterface.TryInitialize();
}
if (options.UseCompositor)
if (Options.UseCompositor)
{
Compositor = new Compositor(
AvaloniaLocator.Current.GetRequiredService<IRenderLoop>(),

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

@ -78,6 +78,13 @@ namespace Avalonia.Rendering.Composition.Server
if (Root == null)
return;
if ((_renderTarget as IRenderTargetWithCorruptionInfo)?.IsCorrupted == true)
{
_renderTarget!.Dispose();
_renderTarget = null;
}
_renderTarget ??= _renderTargetFactory();
Compositor.UpdateServerTime();

Loading…
Cancel
Save