From 0e20dc802ccc1b79cff11163b4817515feec6d5d Mon Sep 17 00:00:00 2001 From: Ferhat Date: Tue, 25 Feb 2020 13:38:25 -0800 Subject: [PATCH] Evict BitmapCanvas(s) from cache when canvas allocation fails (flutter/engine#16793) --- .../flutter/lib/web_ui/lib/src/engine/canvas_pool.dart | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/canvas_pool.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/canvas_pool.dart index 1d3a289ebe9..fefcf14b13b 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -95,6 +95,14 @@ class _CanvasPool extends _SaveStackTracking { width: _widthInBitmapPixels, height: _heightInBitmapPixels, ); + if (_canvas == null) { + // Evict BitmapCanvas(s) and retry. + _reduceCanvasMemoryUsage(); + _canvas = html.CanvasElement( + width: _widthInBitmapPixels, + height: _heightInBitmapPixels, + ); + } _canvas.style ..position = 'absolute' ..width = '${cssWidth}px'