Browse Source

Use ProcessExit to cleanup the native resources

pull/12248/head
Julien Lebosquain 3 years ago
parent
commit
e16deecd6a
No known key found for this signature in database GPG Key ID: 1833CAD10ACC46FD
  1. 3
      native/Avalonia.Native/src/OSX/main.mm
  2. 6
      src/Avalonia.Native/AvaloniaNativePlatform.cs

3
native/Avalonia.Native/src/OSX/main.mm

@ -198,7 +198,8 @@ class AvaloniaNative : public ComSingleObject<IAvaloniaNativeFactory, &IID_IAval
public:
FORWARD_IUNKNOWN()
virtual ~AvaloniaNative() override {
virtual ~AvaloniaNative() override
{
ReleaseAvnAppEvents();
_deallocator = nullptr;
_dispatcher = nullptr;

6
src/Avalonia.Native/AvaloniaNativePlatform.cs

@ -162,12 +162,12 @@ namespace Avalonia.Native
Compositor = new Compositor(_platformGraphics, true);
Dispatcher.UIThread.ShutdownFinished += OnDispatcherShutdownFinished;
AppDomain.CurrentDomain.ProcessExit += OnProcessExit;
}
private void OnDispatcherShutdownFinished(object? sender, EventArgs e)
private void OnProcessExit(object? sender, EventArgs e)
{
Dispatcher.UIThread.ShutdownFinished -= OnDispatcherShutdownFinished;
AppDomain.CurrentDomain.ProcessExit -= OnProcessExit;
_factory.Dispose();
}

Loading…
Cancel
Save