Browse Source

Fixes #7309 - Each time we retrieve a null *PlatformOptions from AvaloniaLocator, return a default instance

pull/7310/head
odalet 4 years ago
parent
commit
c73a6c86c0
  1. 8
      src/Avalonia.Native/AvaloniaNativeMenuExporter.cs
  2. 4
      src/Avalonia.Native/AvaloniaNativePlatform.cs
  3. 4
      src/Avalonia.X11/Glx/GlxDisplay.cs
  4. 4
      src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs
  5. 9
      src/Windows/Avalonia.Win32/Win32GlManager.cs

8
src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

@ -80,8 +80,8 @@ namespace Avalonia.Native
}; };
result.Add(aboutItem); result.Add(aboutItem);
var macOpts = AvaloniaLocator.Current.GetService<MacOSPlatformOptions>(); var macOpts = AvaloniaLocator.Current.GetService<MacOSPlatformOptions>() ?? new MacOSPlatformOptions();
if (macOpts == null || !macOpts.DisableDefaultApplicationMenuItems) if (!macOpts.DisableDefaultApplicationMenuItems)
{ {
result.Add(new NativeMenuItemSeparator()); result.Add(new NativeMenuItemSeparator());
@ -142,9 +142,9 @@ namespace Avalonia.Native
private void DoLayoutReset(bool forceUpdate = false) private void DoLayoutReset(bool forceUpdate = false)
{ {
var macOpts = AvaloniaLocator.Current.GetService<MacOSPlatformOptions>(); var macOpts = AvaloniaLocator.Current.GetService<MacOSPlatformOptions>() ?? new MacOSPlatformOptions();
if (macOpts != null && macOpts.DisableNativeMenus) if (macOpts.DisableNativeMenus)
{ {
return; return;
} }

4
src/Avalonia.Native/AvaloniaNativePlatform.cs

@ -96,9 +96,9 @@ namespace Avalonia.Native
_factory.Initialize(new GCHandleDeallocator(), applicationPlatform); _factory.Initialize(new GCHandleDeallocator(), applicationPlatform);
if (_factory.MacOptions != null) if (_factory.MacOptions != null)
{ {
var macOpts = AvaloniaLocator.Current.GetService<MacOSPlatformOptions>(); var macOpts = AvaloniaLocator.Current.GetService<MacOSPlatformOptions>() ?? new MacOSPlatformOptions();
_factory.MacOptions.SetShowInDock(macOpts?.ShowInDock != false ? 1 : 0); _factory.MacOptions.SetShowInDock(macOpts.ShowInDock ? 1 : 0);
} }
AvaloniaLocator.CurrentMutable AvaloniaLocator.CurrentMutable

4
src/Avalonia.X11/Glx/GlxDisplay.cs

@ -95,8 +95,8 @@ namespace Avalonia.X11.Glx
if (Environment.GetEnvironmentVariable("AVALONIA_GLX_IGNORE_RENDERER_BLACKLIST") != "1") if (Environment.GetEnvironmentVariable("AVALONIA_GLX_IGNORE_RENDERER_BLACKLIST") != "1")
{ {
var blacklist = AvaloniaLocator.Current.GetService<X11PlatformOptions>() var opts = AvaloniaLocator.Current.GetService<X11PlatformOptions>() ?? new X11PlatformOptions();
?.GlxRendererBlacklist; var blacklist = opts.GlxRendererBlacklist;
if (blacklist != null) if (blacklist != null)
foreach (var item in blacklist) foreach (var item in blacklist)
if (glInterface.Renderer.Contains(item)) if (glInterface.Renderer.Contains(item))

4
src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs

@ -38,11 +38,11 @@ namespace Avalonia.LinuxFramebuffer
if (_fb is IGlOutputBackend gl) if (_fb is IGlOutputBackend gl)
AvaloniaLocator.CurrentMutable.Bind<IPlatformOpenGlInterface>().ToConstant(gl.PlatformOpenGlInterface); AvaloniaLocator.CurrentMutable.Bind<IPlatformOpenGlInterface>().ToConstant(gl.PlatformOpenGlInterface);
var opts = AvaloniaLocator.Current.GetService<LinuxFramebufferPlatformOptions>(); var opts = AvaloniaLocator.Current.GetService<LinuxFramebufferPlatformOptions>() ?? new LinuxFramebufferPlatformOptions();
AvaloniaLocator.CurrentMutable AvaloniaLocator.CurrentMutable
.Bind<IPlatformThreadingInterface>().ToConstant(Threading) .Bind<IPlatformThreadingInterface>().ToConstant(Threading)
.Bind<IRenderTimer>().ToConstant(new DefaultRenderTimer(opts?.Fps ?? 60)) .Bind<IRenderTimer>().ToConstant(new DefaultRenderTimer(opts.Fps))
.Bind<IRenderLoop>().ToConstant(new RenderLoop()) .Bind<IRenderLoop>().ToConstant(new RenderLoop())
.Bind<ICursorFactory>().ToTransient<CursorFactoryStub>() .Bind<ICursorFactory>().ToTransient<CursorFactoryStub>()
.Bind<IKeyboardDevice>().ToConstant(new KeyboardDevice()) .Bind<IKeyboardDevice>().ToConstant(new KeyboardDevice())

9
src/Windows/Avalonia.Win32/Win32GlManager.cs

@ -13,19 +13,18 @@ namespace Avalonia.Win32
{ {
AvaloniaLocator.CurrentMutable.Bind<IPlatformOpenGlInterface>().ToLazy<IPlatformOpenGlInterface>(() => AvaloniaLocator.CurrentMutable.Bind<IPlatformOpenGlInterface>().ToLazy<IPlatformOpenGlInterface>(() =>
{ {
var opts = AvaloniaLocator.Current.GetService<Win32PlatformOptions>(); var opts = AvaloniaLocator.Current.GetService<Win32PlatformOptions>() ?? new Win32PlatformOptions();
if (opts?.UseWgl == true) if (opts.UseWgl)
{ {
var wgl = WglPlatformOpenGlInterface.TryCreate(); var wgl = WglPlatformOpenGlInterface.TryCreate();
return wgl; return wgl;
} }
if (opts?.AllowEglInitialization ?? Win32Platform.WindowsVersion > PlatformConstants.Windows7) if (opts.AllowEglInitialization ?? Win32Platform.WindowsVersion > PlatformConstants.Windows7)
{ {
var egl = EglPlatformOpenGlInterface.TryCreate(() => new AngleWin32EglDisplay()); var egl = EglPlatformOpenGlInterface.TryCreate(() => new AngleWin32EglDisplay());
if (egl != null && if (egl != null && opts.UseWindowsUIComposition)
opts?.UseWindowsUIComposition == true)
{ {
WinUICompositorConnection.TryCreateAndRegister(egl, opts.CompositionBackdropCornerRadius); WinUICompositorConnection.TryCreateAndRegister(egl, opts.CompositionBackdropCornerRadius);
} }

Loading…
Cancel
Save