Commit f0ebc2b0 authored by Adam Barth's avatar Adam Barth

Merge pull request #279 from abarth/faster_layout

Make layout_bench.dart 19% faster
parents 8c98ea37 1d7cd6b7
...@@ -926,13 +926,15 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget { ...@@ -926,13 +926,15 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
/// writes are coalesced, removing redundant computation. /// writes are coalesced, removing redundant computation.
void markNeedsPaint() { void markNeedsPaint() {
assert(!debugDoingPaint); assert(!debugDoingPaint);
if (!attached) return; // Don't try painting things that aren't in the hierarchy if (!attached)
if (_needsPaint) return; return; // Don't try painting things that aren't in the hierarchy
if (_needsPaint)
return;
_needsPaint = true;
if (hasLayer) { if (hasLayer) {
// If we always have our own layer, then we can just repaint // If we always have our own layer, then we can just repaint
// ourselves without involving any other nodes. // ourselves without involving any other nodes.
assert(_layer != null); assert(_layer != null);
_needsPaint = true;
_nodesNeedingPaint.add(this); _nodesNeedingPaint.add(this);
scheduler.ensureVisualUpdate(); scheduler.ensureVisualUpdate();
} else if (parent is RenderObject) { } else if (parent is RenderObject) {
...@@ -948,7 +950,6 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget { ...@@ -948,7 +950,6 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
// then we have to paint ourselves, since nobody else can paint // then we have to paint ourselves, since nobody else can paint
// us. We don't add ourselves to _nodesNeedingPaint in this // us. We don't add ourselves to _nodesNeedingPaint in this
// case, because the root is always told to paint regardless. // case, because the root is always told to paint regardless.
_needsPaint = true;
scheduler.ensureVisualUpdate(); scheduler.ensureVisualUpdate();
} }
} }
......
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