From dc20ef226834a719e7d2e29d853c9937c5546a4b Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 15 Oct 2018 22:24:59 +0100 Subject: [PATCH] prevent window will close being called twice. --- src/Avalonia.Native/WindowImplBase.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Native/WindowImplBase.cs b/src/Avalonia.Native/WindowImplBase.cs index 2895145cf3..68dc72ad19 100644 --- a/src/Avalonia.Native/WindowImplBase.cs +++ b/src/Avalonia.Native/WindowImplBase.cs @@ -18,6 +18,7 @@ namespace Avalonia.Native { IInputRoot _inputRoot; IAvnWindowBase _native; + bool _isClosed; private object _syncRoot = new object(); private bool _deferredRendering = true; private readonly IMouseDevice _mouse; @@ -110,7 +111,11 @@ namespace Avalonia.Native _parent = parent; } - void IAvnWindowBaseEvents.Closed() => _parent.Closed?.Invoke(); + void IAvnWindowBaseEvents.Closed() + { + _parent._isClosed = true; + _parent.Closed?.Invoke(); + } void IAvnWindowBaseEvents.Activated() => _parent.Activated?.Invoke(); @@ -234,7 +239,11 @@ namespace Avalonia.Native public virtual void Dispose() { - _native.Close(); + if (!_isClosed) + { + _native.Close(); + } + _native.Dispose(); _native = null;