Merge pull request #813 from abarth/device_pixel_ratio
Don't freeze devicePixelRatio at startup
diff --git a/sky/packages/sky/lib/rendering/sky_binding.dart b/sky/packages/sky/lib/rendering/sky_binding.dart
index d993d8d..5eca6e8 100644
--- a/sky/packages/sky/lib/rendering/sky_binding.dart
+++ b/sky/packages/sky/lib/rendering/sky_binding.dart
@@ -40,7 +40,7 @@
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 b1ede69..e835ce3 100644
--- a/sky/packages/sky/lib/rendering/view.dart
+++ b/sky/packages/sky/lib/rendering/view.dart
@@ -22,13 +22,11 @@
class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox> {
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 @@
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 @@
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);