Commit 4923f0cd authored by Adam Barth's avatar Adam Barth

Merge pull request #813 from abarth/device_pixel_ratio

Don't freeze devicePixelRatio at startup
parents d7ba5145 a733e91b
...@@ -40,7 +40,7 @@ class SkyBinding { ...@@ -40,7 +40,7 @@ class SkyBinding {
sky.view.setMetricsChangedCallback(_handleMetricsChanged); sky.view.setMetricsChangedCallback(_handleMetricsChanged);
scheduler.init(); scheduler.init();
if (renderViewOverride == null) { if (renderViewOverride == null) {
_renderView = new RenderView(child: root, devicePixelRatio: sky.view.devicePixelRatio); _renderView = new RenderView(child: root);
_renderView.attach(); _renderView.attach();
_renderView.rootConstraints = _createConstraints(); _renderView.rootConstraints = _createConstraints();
_renderView.scheduleInitialFrame(); _renderView.scheduleInitialFrame();
......
...@@ -22,13 +22,11 @@ class ViewConstraints { ...@@ -22,13 +22,11 @@ class ViewConstraints {
class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox> { class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox> {
RenderView({ RenderView({
RenderBox child, RenderBox child,
this.devicePixelRatio,
this.timeForRotation: const Duration(microseconds: 83333) this.timeForRotation: const Duration(microseconds: 83333)
}) { }) {
this.child = child; this.child = child;
} }
final double devicePixelRatio;
Duration timeForRotation; Duration timeForRotation;
Size _size = Size.zero; Size _size = Size.zero;
...@@ -46,10 +44,14 @@ class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox> ...@@ -46,10 +44,14 @@ class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox>
markNeedsLayout(); markNeedsLayout();
} }
Matrix4 get _logicalToDeviceTransform {
double devicePixelRatio = sky.view.devicePixelRatio;
return new Matrix4.diagonal3Values(devicePixelRatio, devicePixelRatio, 1.0);
}
void scheduleInitialFrame() { void scheduleInitialFrame() {
Matrix4 logicalToDeviceZoom = new Matrix4.diagonal3Values(devicePixelRatio, devicePixelRatio, 1.0);
scheduleInitialLayout(); scheduleInitialLayout();
scheduleInitialPaint(new TransformLayer(transform: logicalToDeviceZoom)); scheduleInitialPaint(new TransformLayer(transform: _logicalToDeviceTransform));
scheduler.ensureVisualUpdate(); scheduler.ensureVisualUpdate();
} }
...@@ -98,6 +100,7 @@ class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox> ...@@ -98,6 +100,7 @@ class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox>
void compositeFrame() { void compositeFrame() {
sky.tracing.begin('RenderView.compositeFrame'); sky.tracing.begin('RenderView.compositeFrame');
try { try {
(layer as TransformLayer).transform = _logicalToDeviceTransform;
Rect bounds = Point.origin & (size * sky.view.devicePixelRatio); Rect bounds = Point.origin & (size * sky.view.devicePixelRatio);
sky.SceneBuilder builder = new sky.SceneBuilder(bounds); sky.SceneBuilder builder = new sky.SceneBuilder(bounds);
layer.addToScene(builder, Offset.zero); layer.addToScene(builder, Offset.zero);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment