Merge pull request #813 from abarth/device_pixel_ratio

Don't freeze devicePixelRatio at startup
This commit is contained in:
Adam Barth 2015-08-25 14:55:01 -07:00
commit 4923f0cd08
2 changed files with 8 additions and 5 deletions

View File

@ -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();

View File

@ -22,13 +22,11 @@ class ViewConstraints {
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 @@ class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox>
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<RenderBox>
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);