Browse Source

fix exception on popup dispose.

pull/1977/head
Dan Walmsley 8 years ago
parent
commit
1734793325
  1. 10
      src/Avalonia.Native/PopupImpl.cs
  2. 13
      src/Avalonia.Native/WindowImplBase.cs

10
src/Avalonia.Native/PopupImpl.cs

@ -9,22 +9,14 @@ namespace Avalonia.Native
{
public class PopupImpl : WindowBaseImpl, IPopupImpl
{
IAvnPopup _native;
public PopupImpl(IAvaloniaNativeFactory factory)
{
using (var e = new PopupEvents(this))
{
Init(_native = factory.CreatePopup(e), factory.CreateScreens());
Init(factory.CreatePopup(e), factory.CreateScreens());
}
}
public override void Dispose()
{
_native.Dispose();
base.Dispose();
}
class PopupEvents : WindowBaseEvents, IAvnWindowEvents
{
readonly PopupImpl _parent;

13
src/Avalonia.Native/WindowImplBase.cs

@ -20,7 +20,6 @@ namespace Avalonia.Native
{
IInputRoot _inputRoot;
IAvnWindowBase _native;
bool _isClosed;
private object _syncRoot = new object();
private bool _deferredRendering = false;
private bool _gpu = false;
@ -254,15 +253,11 @@ namespace Avalonia.Native
public virtual void Dispose()
{
if (!_isClosed)
{
_isClosed = true;
_native?.Close();
_native?.Dispose();
_native = null;
_native?.Close();
_native?.Dispose();
_native = null;
(Screen as ScreenImpl)?.Dispose();
}
(Screen as ScreenImpl)?.Dispose();
}

Loading…
Cancel
Save