From 24d02b3312d667368e8230e080313310b9f43e16 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. --- sky/packages/sky/lib/rendering/sky_binding.dart | 2 +- sky/packages/sky/lib/rendering/view.dart | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sky/packages/sky/lib/rendering/sky_binding.dart b/sky/packages/sky/lib/rendering/sky_binding.dart index d993d8db256..5eca6e8f34f 100644 --- a/sky/packages/sky/lib/rendering/sky_binding.dart +++ b/sky/packages/sky/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/sky/packages/sky/lib/rendering/view.dart b/sky/packages/sky/lib/rendering/view.dart index b1ede698fff..e835ce393d5 100644 --- a/sky/packages/sky/lib/rendering/view.dart +++ b/sky/packages/sky/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);