Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1986)

Unified Diff: cc/layer_impl.cc

Issue 11447028: cc: Split out calcDrawEtc from drawLayers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clean up unnecessary test changes Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/layer_impl.cc
diff --git a/cc/layer_impl.cc b/cc/layer_impl.cc
index 34441b5d6ca263d8865db73e8cfad584a386da29..ec9d46f7c83206f0e21f5f85355971e4b18da30c 100644
--- a/cc/layer_impl.cc
+++ b/cc/layer_impl.cc
@@ -66,7 +66,11 @@ LayerImpl::~LayerImpl()
void LayerImpl::addChild(scoped_ptr<LayerImpl> child)
{
child->setParent(this);
+ child->setLayerTreeHostImpl(layerTreeHostImpl());
m_children.append(child.Pass());
+
+ if (m_layerTreeHostImpl)
+ m_layerTreeHostImpl->setNeedsUpdateDrawProperties();
}
void LayerImpl::removeFromParent()
@@ -80,6 +84,8 @@ void LayerImpl::removeFromParent()
for (size_t i = 0; i < parent->m_children.size(); ++i) {
if (parent->m_children[i] == this) {
parent->m_children.remove(i);
+ if (m_layerTreeHostImpl)
+ m_layerTreeHostImpl->setNeedsUpdateDrawProperties();
return;
}
}
@@ -94,6 +100,8 @@ void LayerImpl::removeAllChildren()
void LayerImpl::clearChildList()
{
m_children.clear();
+ if (m_layerTreeHostImpl)
+ m_layerTreeHostImpl->setNeedsUpdateDrawProperties();
}
void LayerImpl::createRenderSurface()
@@ -116,6 +124,25 @@ int LayerImpl::descendantsDrawContent()
return result;
}
+void LayerImpl::setLayerTreeHostImpl(LayerTreeHostImpl* hostImpl)
+{
+ if (m_layerTreeHostImpl == hostImpl)
+ return;
+
+ m_layerTreeHostImpl = hostImpl;
+
+ for (size_t i = 0; i < m_children.size(); ++i)
+ m_children[i]->setLayerTreeHostImpl(hostImpl);
+
+ if (m_maskLayer)
+ m_maskLayer->setLayerTreeHostImpl(hostImpl);
+ if (m_replicaLayer)
+ m_replicaLayer->setLayerTreeHostImpl(hostImpl);
+
+ if (m_layerTreeHostImpl)
+ m_layerTreeHostImpl->setNeedsUpdateDrawProperties();
+}
+
scoped_ptr<SharedQuadState> LayerImpl::createSharedQuadState() const
{
scoped_ptr<SharedQuadState> state = SharedQuadState::Create();
@@ -375,16 +402,31 @@ bool LayerImpl::layerSurfacePropertyChanged() const
return false;
}
-void LayerImpl::noteLayerPropertyChangedForSubtree()
+void LayerImpl::noteLayerSurfacePropertyChanged()
+{
+ m_layerSurfacePropertyChanged = true;
+ if (m_layerTreeHostImpl)
+ m_layerTreeHostImpl->setNeedsUpdateDrawProperties();
+}
+
+void LayerImpl::noteLayerPropertyChanged()
{
m_layerPropertyChanged = true;
+ if (m_layerTreeHostImpl)
+ m_layerTreeHostImpl->setNeedsUpdateDrawProperties();
+}
+
+void LayerImpl::noteLayerPropertyChangedForSubtree()
+{
+ noteLayerPropertyChanged();
noteLayerPropertyChangedForDescendants();
}
void LayerImpl::noteLayerPropertyChangedForDescendants()
{
- for (size_t i = 0; i < m_children.size(); ++i)
+ for (size_t i = 0; i < m_children.size(); ++i) {
danakj 2012/12/06 19:12:10 extra {}s
enne (OOO) 2012/12/06 19:25:42 Done.
m_children[i]->noteLayerPropertyChangedForSubtree();
+ }
}
const char* LayerImpl::layerTypeAsString() const
@@ -452,7 +494,7 @@ void LayerImpl::setBounds(const gfx::Size& bounds)
if (masksToBounds())
noteLayerPropertyChangedForSubtree();
else
- m_layerPropertyChanged = true;
+ noteLayerPropertyChanged();
}
void LayerImpl::setMaskLayer(scoped_ptr<LayerImpl> maskLayer)
@@ -485,7 +527,7 @@ void LayerImpl::setDrawsContent(bool drawsContent)
return;
m_drawsContent = drawsContent;
- m_layerPropertyChanged = true;
+ noteLayerPropertyChanged();
}
void LayerImpl::setAnchorPoint(const gfx::PointF& anchorPoint)
@@ -512,7 +554,7 @@ void LayerImpl::setBackgroundColor(SkColor backgroundColor)
return;
m_backgroundColor = backgroundColor;
- m_layerPropertyChanged = true;
+ noteLayerPropertyChanged();
}
void LayerImpl::setFilters(const WebKit::WebFilterOperations& filters)
@@ -531,7 +573,7 @@ void LayerImpl::setBackgroundFilters(const WebKit::WebFilterOperations& backgrou
return;
m_backgroundFilters = backgroundFilters;
- m_layerPropertyChanged = true;
+ noteLayerPropertyChanged();
}
void LayerImpl::setFilter(const skia::RefPtr<SkImageFilter>& filter)
@@ -568,7 +610,7 @@ void LayerImpl::setOpacity(float opacity)
return;
m_opacity = opacity;
- m_layerSurfacePropertyChanged = true;
+ noteLayerSurfacePropertyChanged();
}
bool LayerImpl::opacityIsAnimating() const
@@ -610,7 +652,7 @@ void LayerImpl::setTransform(const gfx::Transform& transform)
return;
m_transform = transform;
- m_layerSurfacePropertyChanged = true;
+ noteLayerSurfacePropertyChanged();
}
bool LayerImpl::transformIsAnimating() const
@@ -624,7 +666,7 @@ void LayerImpl::setContentBounds(const gfx::Size& contentBounds)
return;
m_contentBounds = contentBounds;
- m_layerPropertyChanged = true;
+ noteLayerPropertyChanged();
}
void LayerImpl::setContentsScale(float contentsScaleX, float contentsScaleY)
@@ -634,7 +676,7 @@ void LayerImpl::setContentsScale(float contentsScaleX, float contentsScaleY)
m_contentsScaleX = contentsScaleX;
m_contentsScaleY = contentsScaleY;
- m_layerPropertyChanged = true;
+ noteLayerPropertyChanged();
}
void LayerImpl::setScrollOffset(gfx::Vector2d scrollOffset)

Powered by Google App Engine
This is Rietveld 408576698