Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/layer_impl.h" | 5 #include "cc/layer_impl.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "cc/debug_border_draw_quad.h" | 10 #include "cc/debug_border_draw_quad.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 49 , m_isContainerForFixedPositionLayers(false) | 49 , m_isContainerForFixedPositionLayers(false) |
| 50 , m_fixedToContainerLayer(false) | 50 , m_fixedToContainerLayer(false) |
| 51 , m_drawDepth(0) | 51 , m_drawDepth(0) |
| 52 #ifndef NDEBUG | 52 #ifndef NDEBUG |
| 53 , m_betweenWillDrawAndDidDraw(false) | 53 , m_betweenWillDrawAndDidDraw(false) |
| 54 #endif | 54 #endif |
| 55 , m_layerAnimationController(LayerAnimationController::create(this)) | 55 , m_layerAnimationController(LayerAnimationController::create(this)) |
| 56 { | 56 { |
| 57 DCHECK(m_layerId > 0); | 57 DCHECK(m_layerId > 0); |
| 58 DCHECK(m_layerTreeImpl); | 58 DCHECK(m_layerTreeImpl); |
| 59 m_layerTreeImpl->RegisterLayer(this); | |
| 59 } | 60 } |
| 60 | 61 |
| 61 LayerImpl::~LayerImpl() | 62 LayerImpl::~LayerImpl() |
| 62 { | 63 { |
| 63 #ifndef NDEBUG | 64 #ifndef NDEBUG |
| 64 DCHECK(!m_betweenWillDrawAndDidDraw); | 65 DCHECK(!m_betweenWillDrawAndDidDraw); |
| 65 #endif | 66 #endif |
| 67 m_layerTreeImpl->UnregisterLayer(this); | |
| 66 } | 68 } |
| 67 | 69 |
| 68 void LayerImpl::addChild(scoped_ptr<LayerImpl> child) | 70 void LayerImpl::addChild(scoped_ptr<LayerImpl> child) |
| 69 { | 71 { |
| 70 child->setParent(this); | 72 child->setParent(this); |
| 71 DCHECK_EQ(layerTreeImpl(), child->layerTreeImpl()); | 73 DCHECK_EQ(layerTreeImpl(), child->layerTreeImpl()); |
| 72 m_children.append(child.Pass()); | 74 m_children.append(child.Pass()); |
| 73 layerTreeImpl()->SetNeedsUpdateDrawProperties(); | 75 layerTreeImpl()->SetNeedsUpdateDrawProperties(); |
| 74 } | 76 } |
| 75 | 77 |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 487 m_bounds = bounds; | 489 m_bounds = bounds; |
| 488 | 490 |
| 489 if (masksToBounds()) | 491 if (masksToBounds()) |
| 490 noteLayerPropertyChangedForSubtree(); | 492 noteLayerPropertyChangedForSubtree(); |
| 491 else | 493 else |
| 492 noteLayerPropertyChanged(); | 494 noteLayerPropertyChanged(); |
| 493 } | 495 } |
| 494 | 496 |
| 495 void LayerImpl::setMaskLayer(scoped_ptr<LayerImpl> maskLayer) | 497 void LayerImpl::setMaskLayer(scoped_ptr<LayerImpl> maskLayer) |
| 496 { | 498 { |
| 497 if (maskLayer) | 499 int newLayerId = maskLayer ? maskLayer->id() : -1; |
| 500 | |
| 501 if (maskLayer) { | |
| 498 DCHECK_EQ(layerTreeImpl(), maskLayer->layerTreeImpl()); | 502 DCHECK_EQ(layerTreeImpl(), maskLayer->layerTreeImpl()); |
| 499 m_maskLayer = maskLayer.Pass(); | 503 DCHECK_NE(newLayerId, m_maskLayerId); |
| 500 | 504 } 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!
| |
| 501 int newLayerId = m_maskLayer ? m_maskLayer->id() : -1; | |
| 502 if (newLayerId == m_maskLayerId) | |
| 503 return; | 505 return; |
|
danakj
2012/12/13 23:57:11
If the ids match, we're going to free the maskLaye
| |
| 504 | 506 |
| 507 m_maskLayer = maskLayer.Pass(); | |
| 505 m_maskLayerId = newLayerId; | 508 m_maskLayerId = newLayerId; |
| 506 noteLayerPropertyChangedForSubtree(); | 509 noteLayerPropertyChangedForSubtree(); |
| 507 } | 510 } |
| 508 | 511 |
| 512 scoped_ptr<LayerImpl> LayerImpl::takeMaskLayer() | |
| 513 { | |
| 514 m_maskLayerId = -1; | |
| 515 return m_maskLayer.Pass(); | |
| 516 } | |
| 517 | |
| 509 void LayerImpl::setReplicaLayer(scoped_ptr<LayerImpl> replicaLayer) | 518 void LayerImpl::setReplicaLayer(scoped_ptr<LayerImpl> replicaLayer) |
| 510 { | 519 { |
| 511 if (replicaLayer) | 520 int newLayerId = replicaLayer ? replicaLayer->id() : -1; |
| 521 | |
| 522 if (replicaLayer) { | |
| 512 DCHECK_EQ(layerTreeImpl(), replicaLayer->layerTreeImpl()); | 523 DCHECK_EQ(layerTreeImpl(), replicaLayer->layerTreeImpl()); |
| 513 m_replicaLayer = replicaLayer.Pass(); | 524 DCHECK_NE(newLayerId, m_replicaLayerId); |
| 514 | 525 } else if (newLayerId == m_replicaLayerId) |
| 515 int newLayerId = m_replicaLayer ? m_replicaLayer->id() : -1; | |
| 516 if (newLayerId == m_replicaLayerId) | |
| 517 return; | 526 return; |
| 518 | 527 |
| 528 m_replicaLayer = replicaLayer.Pass(); | |
| 519 m_replicaLayerId = newLayerId; | 529 m_replicaLayerId = newLayerId; |
| 520 noteLayerPropertyChangedForSubtree(); | 530 noteLayerPropertyChangedForSubtree(); |
| 521 } | 531 } |
| 522 | 532 |
| 533 scoped_ptr<LayerImpl> LayerImpl::takeReplicaLayer() | |
| 534 { | |
| 535 m_replicaLayerId = -1; | |
| 536 return m_replicaLayer.Pass(); | |
| 537 } | |
| 538 | |
| 523 void LayerImpl::setDrawsContent(bool drawsContent) | 539 void LayerImpl::setDrawsContent(bool drawsContent) |
| 524 { | 540 { |
| 525 if (m_drawsContent == drawsContent) | 541 if (m_drawsContent == drawsContent) |
| 526 return; | 542 return; |
| 527 | 543 |
| 528 m_drawsContent = drawsContent; | 544 m_drawsContent = drawsContent; |
| 529 noteLayerPropertyChanged(); | 545 noteLayerPropertyChanged(); |
| 530 } | 546 } |
| 531 | 547 |
| 532 void LayerImpl::setAnchorPoint(const gfx::PointF& anchorPoint) | 548 void LayerImpl::setAnchorPoint(const gfx::PointF& anchorPoint) |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 768 | 784 |
| 769 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) | 785 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) |
| 770 { | 786 { |
| 771 if (!m_scrollbarAnimationController) | 787 if (!m_scrollbarAnimationController) |
| 772 m_scrollbarAnimationController = ScrollbarAnimationController::create(th is); | 788 m_scrollbarAnimationController = ScrollbarAnimationController::create(th is); |
| 773 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); | 789 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); |
| 774 m_scrollbarAnimationController->updateScrollOffset(this); | 790 m_scrollbarAnimationController->updateScrollOffset(this); |
| 775 } | 791 } |
| 776 | 792 |
| 777 } // namespace cc | 793 } // namespace cc |
| OLD | NEW |