Browse Source

Prevent crashes caused by null locked framebuffer.

Dariusz Komosinski 5 years ago
parent
commit
af8acfce0d
1 changed files with 7 additions and 5 deletions
  1. 7 5
      src/Windows/Avalonia.Win32/FramebufferManager.cs

+ 7 - 5
src/Windows/Avalonia.Win32/FramebufferManager.cs

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