From a733e91b7bbff21e728ea4a91276383805a48bd6 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Tue, 25 Aug 2015 14:06:53 -0700 Subject: [PATCH] Don't freeze devicePixelRatio at startup When we start, we might not have initialized the devicePixelRatio value. The value will be initialized by the time we paint, so now we update the value every time we paint. --- packages/flutter/lib/rendering/sky_binding.dart | 2 +- packages/flutter/lib/rendering/view.dart | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/flutter/lib/rendering/sky_binding.dart b/packages/flutter/lib/rendering/sky_binding.dart index d993d8db25..5eca6e8f34 100644 --- a/packages/flutter/lib/rendering/sky_binding.dart +++ b/packages/flutter/lib/rendering/sky_binding.dart @@ -40,7 +40,7 @@ class SkyBinding { sky.view.setMetricsChangedCallback(_handleMetricsChanged); scheduler.init(); if (renderViewOverride == null) { - _renderView = new RenderView(child: root, devicePixelRatio: sky.view.devicePixelRatio); + _renderView = new RenderView(child: root); _renderView.attach(); _renderView.rootConstraints = _createConstraints(); _renderView.scheduleInitialFrame(); diff --git a/packages/flutter/lib/rendering/view.dart b/packages/flutter/lib/rendering/view.dart index b1ede698ff..e835ce393d 100644 --- a/packages/flutter/lib/rendering/view.dart +++ b/packages/flutter/lib/rendering/view.dart @@ -22,13 +22,11 @@ class ViewConstraints { class RenderView extends RenderObject with RenderObjectWithChildMixin { RenderView({ RenderBox child, - this.devicePixelRatio, this.timeForRotation: const Duration(microseconds: 83333) }) { this.child = child; } - final double devicePixelRatio; Duration timeForRotation; Size _size = Size.zero; @@ -46,10 +44,14 @@ class RenderView extends RenderObject with RenderObjectWithChildMixin markNeedsLayout(); } + Matrix4 get _logicalToDeviceTransform { + double devicePixelRatio = sky.view.devicePixelRatio; + return new Matrix4.diagonal3Values(devicePixelRatio, devicePixelRatio, 1.0); + } + void scheduleInitialFrame() { - Matrix4 logicalToDeviceZoom = new Matrix4.diagonal3Values(devicePixelRatio, devicePixelRatio, 1.0); scheduleInitialLayout(); - scheduleInitialPaint(new TransformLayer(transform: logicalToDeviceZoom)); + scheduleInitialPaint(new TransformLayer(transform: _logicalToDeviceTransform)); scheduler.ensureVisualUpdate(); } @@ -98,6 +100,7 @@ class RenderView extends RenderObject with RenderObjectWithChildMixin void compositeFrame() { sky.tracing.begin('RenderView.compositeFrame'); try { + (layer as TransformLayer).transform = _logicalToDeviceTransform; Rect bounds = Point.origin & (size * sky.view.devicePixelRatio); sky.SceneBuilder builder = new sky.SceneBuilder(bounds); layer.addToScene(builder, Offset.zero);