From a58c6dec5865219c3cd6a4ec313f3237ff27f4bd Mon Sep 17 00:00:00 2001 From: ferhatb Date: Wed, 8 Jan 2020 16:50:38 -0800 Subject: [PATCH 1/2] Fix devicepixel ratio reset problem when replaying clip stack --- lib/web_ui/lib/src/engine/canvas_pool.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index 61ba362d7bece..8722fccf4e70e 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -140,7 +140,12 @@ class _CanvasPool extends _SaveStackTracking { int clipDepth, Matrix4 transform, List<_SaveClipEntry> clipStack) { final html.CanvasRenderingContext2D ctx = _context; if (!transform.isIdentity()) { - ctx.setTransform(transform[0], transform[1], transform[4], transform[5], + ctx.setTransform(1, 0, 0, 1, 0, 0); + final double ratio = EngineWindow.browserDevicePixelRatio; + if (ratio != 1.0) { + ctx.scale(ratio, ratio); + } + ctx.transform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]); } if (clipStack != null) { From 6ea776c1773a974988c79cf87ff653bf2fdf3480 Mon Sep 17 00:00:00 2001 From: ferhatb Date: Wed, 8 Jan 2020 17:15:08 -0800 Subject: [PATCH 2/2] Simplify setTransform --- lib/web_ui/lib/src/engine/canvas_pool.dart | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index 8722fccf4e70e..02489f3bbc378 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -140,11 +140,8 @@ class _CanvasPool extends _SaveStackTracking { int clipDepth, Matrix4 transform, List<_SaveClipEntry> clipStack) { final html.CanvasRenderingContext2D ctx = _context; if (!transform.isIdentity()) { - ctx.setTransform(1, 0, 0, 1, 0, 0); final double ratio = EngineWindow.browserDevicePixelRatio; - if (ratio != 1.0) { - ctx.scale(ratio, ratio); - } + ctx.setTransform(ratio, 0, 0, ratio, 0, 0); ctx.transform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]); }