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

Unified Diff: cc/layer_impl.cc

Issue 11575018: cc: Add id->LayerImpl map to LayerTreeImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 3ee3c751f95685c4665c6cf0562db23b2ed1e755..0c22ccf70556f5fc3951c10c50fee00f4f4c3d59 100644
--- a/cc/layer_impl.cc
+++ b/cc/layer_impl.cc
@@ -56,6 +56,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* treeImpl, int id)
{
DCHECK(m_layerId > 0);
DCHECK(m_layerTreeImpl);
+ m_layerTreeImpl->RegisterLayer(this);
}
LayerImpl::~LayerImpl()
@@ -63,6 +64,7 @@ LayerImpl::~LayerImpl()
#ifndef NDEBUG
DCHECK(!m_betweenWillDrawAndDidDraw);
#endif
+ m_layerTreeImpl->UnregisterLayer(this);
}
void LayerImpl::addChild(scoped_ptr<LayerImpl> child)
@@ -494,32 +496,46 @@ void LayerImpl::setBounds(const gfx::Size& bounds)
void LayerImpl::setMaskLayer(scoped_ptr<LayerImpl> maskLayer)
{
- if (maskLayer)
- DCHECK_EQ(layerTreeImpl(), maskLayer->layerTreeImpl());
- m_maskLayer = maskLayer.Pass();
+ int newLayerId = maskLayer ? maskLayer->id() : -1;
- int newLayerId = m_maskLayer ? m_maskLayer->id() : -1;
- if (newLayerId == m_maskLayerId)
+ if (maskLayer) {
+ DCHECK_EQ(layerTreeImpl(), maskLayer->layerTreeImpl());
+ DCHECK_NE(newLayerId, m_maskLayerId);
+ } else if (newLayerId == m_maskLayerId)
danakj 2012/12/13 23:57:11 This is "if (!maskLayer && newLayerId == m_maskLay
enne (OOO) 2012/12/14 00:21:12 No, I meant else if. This is the case where "if y
danakj 2012/12/14 00:23:15 OOhh. ok!
return;
danakj 2012/12/13 23:57:11 If the ids match, we're going to free the maskLaye
+ m_maskLayer = maskLayer.Pass();
m_maskLayerId = newLayerId;
noteLayerPropertyChangedForSubtree();
}
+scoped_ptr<LayerImpl> LayerImpl::takeMaskLayer()
+{
+ m_maskLayerId = -1;
+ return m_maskLayer.Pass();
+}
+
void LayerImpl::setReplicaLayer(scoped_ptr<LayerImpl> replicaLayer)
{
- if (replicaLayer)
- DCHECK_EQ(layerTreeImpl(), replicaLayer->layerTreeImpl());
- m_replicaLayer = replicaLayer.Pass();
+ int newLayerId = replicaLayer ? replicaLayer->id() : -1;
- int newLayerId = m_replicaLayer ? m_replicaLayer->id() : -1;
- if (newLayerId == m_replicaLayerId)
+ if (replicaLayer) {
+ DCHECK_EQ(layerTreeImpl(), replicaLayer->layerTreeImpl());
+ DCHECK_NE(newLayerId, m_replicaLayerId);
+ } else if (newLayerId == m_replicaLayerId)
return;
+ m_replicaLayer = replicaLayer.Pass();
m_replicaLayerId = newLayerId;
noteLayerPropertyChangedForSubtree();
}
+scoped_ptr<LayerImpl> LayerImpl::takeReplicaLayer()
+{
+ m_replicaLayerId = -1;
+ return m_replicaLayer.Pass();
+}
+
void LayerImpl::setDrawsContent(bool drawsContent)
{
if (m_drawsContent == drawsContent)
« no previous file with comments | « cc/layer_impl.h ('k') | cc/layer_impl_unittest.cc » ('j') | cc/layer_tree_impl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698