From 69f878df59600db097f189eabf7aae9bf77c8e89 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 20 Aug 2020 14:59:55 +0100 Subject: [PATCH 1/2] allow osx to run in vm where opengl init may fail. --- src/Avalonia.Native/AvaloniaNativePlatform.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Native/AvaloniaNativePlatform.cs b/src/Avalonia.Native/AvaloniaNativePlatform.cs index cfd47d48de..804cf7f8ac 100644 --- a/src/Avalonia.Native/AvaloniaNativePlatform.cs +++ b/src/Avalonia.Native/AvaloniaNativePlatform.cs @@ -110,11 +110,20 @@ namespace Avalonia.Native .Bind().ToConstant(new SystemDialogs(_factory.CreateSystemDialogs())) .Bind().ToConstant(new PlatformHotkeyConfiguration(KeyModifiers.Meta)) .Bind().ToConstant(new MacOSMountedVolumeInfoProvider()) - .Bind().ToConstant(new AvaloniaNativeDragSource(_factory)) - ; + .Bind().ToConstant(new AvaloniaNativeDragSource(_factory)); + if (_options.UseGpu) - AvaloniaLocator.CurrentMutable.Bind() - .ToConstant(_glFeature = new GlPlatformFeature(_factory.ObtainGlDisplay())); + { + try + { + AvaloniaLocator.CurrentMutable.Bind() + .ToConstant(_glFeature = new GlPlatformFeature(_factory.ObtainGlDisplay())); + } + catch (Exception) + { + // ignored + } + } } public IWindowImpl CreateWindow() From 67381d0a9166c189439a133d5da6d72ce5c56b9d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 20 Aug 2020 15:14:31 +0100 Subject: [PATCH 2/2] dont crash when window is closed and apis are still called. --- src/Avalonia.Native/WindowImplBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Native/WindowImplBase.cs b/src/Avalonia.Native/WindowImplBase.cs index 4b13666edd..08c5d51ea0 100644 --- a/src/Avalonia.Native/WindowImplBase.cs +++ b/src/Avalonia.Native/WindowImplBase.cs @@ -351,12 +351,12 @@ namespace Avalonia.Native public Point PointToClient(PixelPoint point) { - return _native.PointToClient(point.ToAvnPoint()).ToAvaloniaPoint(); + return _native?.PointToClient(point.ToAvnPoint()).ToAvaloniaPoint() ?? default; } public PixelPoint PointToScreen(Point point) { - return _native.PointToScreen(point.ToAvnPoint()).ToAvaloniaPixelPoint(); + return _native?.PointToScreen(point.ToAvnPoint()).ToAvaloniaPixelPoint() ?? default; } public void Hide()