| Index: cc/layers/picture_layer.cc
|
| diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
|
| index f608ba7ae92e6eb6863084ea963dc0c08f5b6956..c56ff8be082b67dbf33e8db8193481efc99b2307 100644
|
| --- a/cc/layers/picture_layer.cc
|
| +++ b/cc/layers/picture_layer.cc
|
| @@ -35,16 +35,22 @@ void PictureLayer::PushPropertiesTo(LayerImpl* base_layer) {
|
| Layer::PushPropertiesTo(base_layer);
|
| PictureLayerImpl* layer_impl = static_cast<PictureLayerImpl*>(base_layer);
|
|
|
| - if (layer_impl->bounds().IsEmpty()) {
|
| - // Update may not get called for an empty layer, so resize here instead.
|
| - // Using layer_impl because either bounds() or paint_properties().bounds
|
| - // may disagree and either one could have been pushed to layer_impl.
|
| + int source_frame_number = layer_tree_host()->source_frame_number();
|
| + gfx::Size impl_bounds = layer_impl->bounds();
|
| + gfx::Size pile_bounds = pile_.tiling_size();
|
| +
|
| + // If update called, then pile size must match bounds pushed to impl layer.
|
| + DCHECK_IMPLIES(update_source_frame_number_ == source_frame_number,
|
| + impl_bounds == pile_bounds)
|
| + << " bounds " << impl_bounds.ToString() << " pile "
|
| + << pile_bounds.ToString();
|
| +
|
| + if (update_source_frame_number_ != source_frame_number &&
|
| + pile_bounds != impl_bounds) {
|
| + // Update may not get called for the layer (if it's not in the viewport
|
| + // for example, even though it has resized making the pile no longer
|
| + // valid. In this case just destroy the pile.
|
| pile_.SetEmptyBounds();
|
| - } else {
|
| - // If update called, then pile size must match bounds pushed to impl layer.
|
| - DCHECK_IMPLIES(
|
| - update_source_frame_number_ == layer_tree_host()->source_frame_number(),
|
| - layer_impl->bounds().ToString() == pile_.tiling_size().ToString());
|
| }
|
|
|
| // Unlike other properties, invalidation must always be set on layer_impl.
|
|
|