Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit d96a0ec

Browse files
committed
Merge pull request #729 from Hixie/rendering
Reorder bootstrapping code in rendering/ for slightly cleaner code.
2 parents 4240a05 + cf41d86 commit d96a0ec

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

sky/packages/sky/lib/rendering/object.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,14 +394,14 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
394394
void scheduleInitialLayout() {
395395
assert(attached);
396396
assert(parent is! RenderObject);
397+
assert(!_debugDoingLayout);
397398
assert(_relayoutSubtreeRoot == null);
398399
_relayoutSubtreeRoot = this;
399400
assert(() {
400401
_debugCanParentUseSize = false;
401402
return true;
402403
});
403404
_nodesNeedingLayout.add(this);
404-
scheduler.ensureVisualUpdate();
405405
}
406406
static void flushLayout() {
407407
sky.tracing.begin('RenderObject.flushLayout');
@@ -648,6 +648,7 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
648648
assert(parent is! RenderObject);
649649
assert(!_debugDoingPaint);
650650
assert(hasLayer);
651+
assert(_layer == null);
651652
_layer = rootLayer;
652653
assert(_needsPaint);
653654
_nodesNeedingPaint.add(this);

sky/packages/sky/lib/rendering/sky_binding.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,10 @@ class SkyBinding {
4040
sky.view.setMetricsChangedCallback(_handleMetricsChanged);
4141
scheduler.init();
4242
if (renderViewOverride == null) {
43-
_renderView = new RenderView(child: root);
43+
_renderView = new RenderView(child: root, devicePixelRatio: sky.view.devicePixelRatio);
4444
_renderView.attach();
4545
_renderView.rootConstraints = _createConstraints();
46-
_renderView.scheduleInitialLayout();
47-
_renderView.initializeLayerTree();
46+
_renderView.scheduleInitialFrame();
4847
} else {
4948
_renderView = renderViewOverride;
5049
}

sky/packages/sky/lib/rendering/view.dart

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'dart:sky' as sky;
66

7+
import 'package:sky/base/scheduler.dart' as scheduler;
78
import 'package:sky/rendering/layer.dart';
89
import 'package:sky/rendering/object.dart';
910
import 'package:sky/rendering/box.dart';
@@ -21,17 +22,20 @@ class ViewConstraints {
2122
class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox> {
2223
RenderView({
2324
RenderBox child,
25+
this.devicePixelRatio,
2426
this.timeForRotation: const Duration(microseconds: 83333)
2527
}) {
2628
this.child = child;
2729
}
2830

31+
final double devicePixelRatio;
32+
Duration timeForRotation;
33+
2934
Size _size = Size.zero;
3035
Size get size => _size;
3136

3237
int _orientation; // 0..3
3338
int get orientation => _orientation;
34-
Duration timeForRotation;
3539

3640
ViewConstraints _rootConstraints;
3741
ViewConstraints get rootConstraints => _rootConstraints;
@@ -42,10 +46,11 @@ class RenderView extends RenderObject with RenderObjectWithChildMixin<RenderBox>
4246
markNeedsLayout();
4347
}
4448

45-
void initializeLayerTree() {
46-
final double devicePixelRatio = sky.view.devicePixelRatio;
49+
void scheduleInitialFrame() {
4750
Matrix4 logicalToDeviceZoom = new Matrix4.diagonal3Values(devicePixelRatio, devicePixelRatio, 1.0);
51+
scheduleInitialLayout();
4852
scheduleInitialPaint(new TransformLayer(transform: logicalToDeviceZoom));
53+
scheduler.ensureVisualUpdate();
4954
}
5055

5156
// We never call layout() on this class, so this should never get

0 commit comments

Comments
 (0)