Chromium Code Reviews| Index: cc/picture_layer.cc |
| diff --git a/cc/picture_layer.cc b/cc/picture_layer.cc |
| index ca2bf4a2988e8c71b9127b46488506f3fdfa71ee..a7466cb633e47191db5b3526ffd7ead89d53a935 100644 |
| --- a/cc/picture_layer.cc |
| +++ b/cc/picture_layer.cc |
| @@ -3,6 +3,8 @@ |
| // found in the LICENSE file. |
| #include "cc/picture_layer.h" |
| + |
| +#include "cc/layer_tree_impl.h" |
| #include "cc/picture_layer_impl.h" |
| #include "ui/gfx/rect_conversions.h" |
| @@ -29,15 +31,30 @@ scoped_ptr<LayerImpl> PictureLayer::createLayerImpl(LayerTreeImpl* treeImpl) { |
| void PictureLayer::pushPropertiesTo(LayerImpl* base_layer) { |
| Layer::pushPropertiesTo(base_layer); |
| + |
| PictureLayerImpl* layer_impl = static_cast<PictureLayerImpl*>(base_layer); |
| - layer_impl->didUpdateBounds(); |
| + layer_impl->tilings_.SetLayerBounds(bounds()); |
| + layer_impl->invalidation_.Clear(); |
| + layer_impl->invalidation_.Swap(pile_invalidation_); |
| pile_.PushPropertiesTo(layer_impl->pile_); |
| - // TODO(enne): Once we have two trees on the impl side, we need to |
| - // sync the active layer's tiles prior to this Invalidate call since it |
| - // will make new tiles for anything intersecting the invalidation. |
| - layer_impl->tilings_.Invalidate(pile_invalidation_); |
| - pile_invalidation_.Clear(); |
| + // TODO(enne): Remove this once syncing happens to the pending tree rather |
| + // than the active one. |
| + if (layer_impl->layerTreeImpl()->IsActiveTree()) { |
| + layer_impl->tilings_.Invalidate(layer_impl->invalidation_); |
| + return; |
| + } |
| + |
| + if (drawsContent()) { |
|
nduca
2012/12/14 02:18:43
can this be a method on the picture layer impl? Di
enne (OOO)
2012/12/14 17:30:53
Do you mean without having to instantiate an activ
|
| + // If there is an active tree version of this layer, get a copy of its |
| + // tiles. This needs to be done last, after setting invalidation and the |
| + // pile. |
| + DCHECK(layer_impl->layerTreeImpl()->IsPendingTree()); |
| + PictureLayerImpl* active_twin = static_cast<PictureLayerImpl*>( |
| + base_layer->layerTreeImpl()->ActiveTreeLayerById(id())); |
| + if (active_twin) |
| + layer_impl->SyncFromActiveLayer(active_twin); |
| + } |
| } |
| void PictureLayer::setNeedsDisplayRect(const gfx::RectF& layer_rect) { |