Chromium Code Reviews| Index: cc/layers/picture_layer_impl.cc |
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc |
| index 4a7e0c0b0b66ae5bdf20743b65c0f51c69824c0d..cbd27065ac0bf914167243eade8f5e2d39c1973e 100644 |
| --- a/cc/layers/picture_layer_impl.cc |
| +++ b/cc/layers/picture_layer_impl.cc |
| @@ -1195,6 +1195,10 @@ void PictureLayerImpl::CleanUpTilingsOnActiveLayer( |
| to_remove.push_back(tiling); |
| } |
| + if (to_remove.empty()) |
| + return; |
| + |
| + // Remove tilings on this tree and the twin tree. |
| for (size_t i = 0; i < to_remove.size(); ++i) { |
| const PictureLayerTiling* twin_tiling = GetTwinTiling(to_remove[i]); |
| // Only remove tilings from the twin layer if they have |
| @@ -1205,9 +1209,19 @@ void PictureLayerImpl::CleanUpTilingsOnActiveLayer( |
| CHECK_NE(HIGH_RESOLUTION, to_remove[i]->resolution()); |
| tilings_->Remove(to_remove[i]); |
| } |
| - DCHECK_GT(tilings_->num_tilings(), 0u); |
| + DCHECK_GT(tilings_->num_tilings(), 0u); |
| SanityCheckTilingState(); |
| + |
| + // Also remove tilings from the recycle tree to ensure that recycle tree |
| + // doesn't have any unshared tiles. |
| + PictureLayerImpl* recycled_twin = static_cast<PictureLayerImpl*>( |
| + layer_tree_impl()->FindRecycleTreeLayerById(id())); |
| + if (!recycled_twin) |
| + return; |
| + |
| + for (size_t i = 0; i < to_remove.size(); ++i) |
| + recycled_twin->RemoveTiling(to_remove[i]->contents_scale()); |
|
danakj
2014/07/17 21:54:48
We might remove the high res tiling on the recycle
|
| } |
| float PictureLayerImpl::MinimumContentsScale() const { |