Browse Source

Prevent crashes caused by null locked framebuffer.

pull/4254/head
Dariusz Komosinski 6 years ago
parent
commit
af8acfce0d
  1. 12
      src/Windows/Avalonia.Win32/FramebufferManager.cs

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

@ -17,16 +17,18 @@ namespace Avalonia.Win32
public ILockedFramebuffer Lock() public ILockedFramebuffer Lock()
{ {
UnmanagedMethods.RECT rc; UnmanagedMethods.GetClientRect(_hwnd, out var rc);
UnmanagedMethods.GetClientRect(_hwnd, out rc);
var width = rc.right - rc.left; var width = Math.Max(1, rc.right - rc.left);
var height = rc.bottom - rc.top; var height = Math.Max(1, rc.bottom - rc.top);
if ((_fb == null || _fb.Size.Width != width || _fb.Size.Height != height) && width > 0 && height > 0)
if ((_fb == null || _fb.Size.Width != width || _fb.Size.Height != height))
{ {
_fb?.Deallocate(); _fb?.Deallocate();
_fb = null; _fb = null;
_fb = new WindowFramebuffer(_hwnd, new PixelSize(width, height)); _fb = new WindowFramebuffer(_hwnd, new PixelSize(width, height));
} }
return _fb; return _fb;
} }
} }

Loading…
Cancel
Save