Browse Source

Allow GC to collect reused framebuffer, that's better than AccessViolationException from render thread

pull/2117/head
Nikita Tsukanov 8 years ago
parent
commit
4f049cf155
  1. 7
      src/Windows/Avalonia.Win32/FramebufferManager.cs
  2. 3
      src/Windows/Avalonia.Win32/WindowImpl.cs

7
src/Windows/Avalonia.Win32/FramebufferManager.cs

@ -5,7 +5,7 @@ using Avalonia.Win32.Interop;
namespace Avalonia.Win32 namespace Avalonia.Win32
{ {
class FramebufferManager : IFramebufferPlatformSurface, IDisposable class FramebufferManager : IFramebufferPlatformSurface
{ {
private readonly IntPtr _hwnd; private readonly IntPtr _hwnd;
private WindowFramebuffer _fb; private WindowFramebuffer _fb;
@ -29,10 +29,5 @@ namespace Avalonia.Win32
} }
return _fb; return _fb;
} }
public void Dispose()
{
_fb?.Deallocate();
}
} }
} }

3
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -13,6 +13,7 @@ using Avalonia.Input.Raw;
using Avalonia.OpenGL; using Avalonia.OpenGL;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.Rendering; using Avalonia.Rendering;
using Avalonia.Threading;
using Avalonia.Win32.Input; using Avalonia.Win32.Input;
using Avalonia.Win32.Interop; using Avalonia.Win32.Interop;
using static Avalonia.Win32.Interop.UnmanagedMethods; using static Avalonia.Win32.Interop.UnmanagedMethods;
@ -234,8 +235,6 @@ namespace Avalonia.Win32
public void Dispose() public void Dispose()
{ {
_framebuffer?.Dispose();
_framebuffer = null;
if (_hwnd != IntPtr.Zero) if (_hwnd != IntPtr.Zero)
{ {
UnmanagedMethods.DestroyWindow(_hwnd); UnmanagedMethods.DestroyWindow(_hwnd);

Loading…
Cancel
Save