diff --git a/src/Avalonia.Native/ScreenImpl.cs b/src/Avalonia.Native/ScreenImpl.cs index 0d593bc2f6..f28be52dd5 100644 --- a/src/Avalonia.Native/ScreenImpl.cs +++ b/src/Avalonia.Native/ScreenImpl.cs @@ -20,21 +20,26 @@ namespace Avalonia.Native { get { - var count = ScreenCount; - var result = new Screen[count]; - - for(int i = 0; i < count; i++) + if (_native != null) { - var screen = _native.GetScreen(i); + var count = ScreenCount; + var result = new Screen[count]; + + for (int i = 0; i < count; i++) + { + var screen = _native.GetScreen(i); + + result[i] = new Screen( + screen.PixelDensity, + screen.Bounds.ToAvaloniaPixelRect(), + screen.WorkingArea.ToAvaloniaPixelRect(), + screen.Primary); + } - result[i] = new Screen( - screen.PixelDensity, - screen.Bounds.ToAvaloniaPixelRect(), - screen.WorkingArea.ToAvaloniaPixelRect(), - screen.Primary); + return result; } - return result; + return Array.Empty(); } } diff --git a/src/Avalonia.Native/WindowImplBase.cs b/src/Avalonia.Native/WindowImplBase.cs index 08c5d51ea0..56cf544d9d 100644 --- a/src/Avalonia.Native/WindowImplBase.cs +++ b/src/Avalonia.Native/WindowImplBase.cs @@ -94,8 +94,13 @@ namespace Avalonia.Native { get { - var s = _native.GetClientSize(); - return new Size(s.Width, s.Height); + if (_native != null) + { + var s = _native.GetClientSize(); + return new Size(s.Width, s.Height); + } + + return default; } } @@ -144,7 +149,6 @@ namespace Avalonia.Native void IAvnWindowBaseEvents.Closed() { var n = _parent._native; - _parent._native = null; try { _parent?.Closed?.Invoke(); @@ -153,6 +157,7 @@ namespace Avalonia.Native { n?.Dispose(); } + _parent._mouse.Dispose(); }