| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/resources/picture_layer_tiling_set.h" | 5 #include "cc/resources/picture_layer_tiling_set.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 namespace cc { | 9 namespace cc { |
| 10 | 10 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 continue; | 68 continue; |
| 69 if (PictureLayerTiling* this_tiling = TilingAtScale(contents_scale)) { | 69 if (PictureLayerTiling* this_tiling = TilingAtScale(contents_scale)) { |
| 70 this_tiling->set_resolution(other.tilings_[i]->resolution()); | 70 this_tiling->set_resolution(other.tilings_[i]->resolution()); |
| 71 | 71 |
| 72 // These two calls must come before updating the pile, because they may | 72 // These two calls must come before updating the pile, because they may |
| 73 // destroy tiles that the new pile cannot raster. | 73 // destroy tiles that the new pile cannot raster. |
| 74 this_tiling->SetLayerBounds(new_layer_bounds); | 74 this_tiling->SetLayerBounds(new_layer_bounds); |
| 75 this_tiling->Invalidate(layer_invalidation); | 75 this_tiling->Invalidate(layer_invalidation); |
| 76 | 76 |
| 77 this_tiling->UpdateTilesToCurrentPile(); | 77 this_tiling->UpdateTilesToCurrentPile(); |
| 78 this_tiling->CreateMissingTilesInLiveTilesRect(); | |
| 79 if (this_tiling->resolution() == HIGH_RESOLUTION) | 78 if (this_tiling->resolution() == HIGH_RESOLUTION) |
| 80 have_high_res_tiling = true; | 79 have_high_res_tiling = true; |
| 81 | 80 |
| 82 DCHECK(this_tiling->tile_size() == | 81 DCHECK(this_tiling->tile_size() == |
| 83 client_->CalculateTileSize(this_tiling->TilingRect().size())); | 82 client_->CalculateTileSize(this_tiling->TilingRect().size())); |
| 84 continue; | 83 continue; |
| 85 } | 84 } |
| 86 scoped_ptr<PictureLayerTiling> new_tiling = PictureLayerTiling::Create( | 85 scoped_ptr<PictureLayerTiling> new_tiling = PictureLayerTiling::Create( |
| 87 contents_scale, | 86 contents_scale, |
| 88 new_layer_bounds, | 87 new_layer_bounds, |
| 89 client_); | 88 client_); |
| 90 new_tiling->set_resolution(other.tilings_[i]->resolution()); | 89 new_tiling->set_resolution(other.tilings_[i]->resolution()); |
| 91 if (new_tiling->resolution() == HIGH_RESOLUTION) | 90 if (new_tiling->resolution() == HIGH_RESOLUTION) |
| 92 have_high_res_tiling = true; | 91 have_high_res_tiling = true; |
| 93 tilings_.push_back(new_tiling.Pass()); | 92 tilings_.push_back(new_tiling.Pass()); |
| 94 } | 93 } |
| 95 tilings_.sort(LargestToSmallestScaleFunctor()); | 94 tilings_.sort(LargestToSmallestScaleFunctor()); |
| 96 | 95 |
| 97 layer_bounds_ = new_layer_bounds; | 96 layer_bounds_ = new_layer_bounds; |
| 98 return have_high_res_tiling; | 97 return have_high_res_tiling; |
| 99 } | 98 } |
| 100 | 99 |
| 101 void PictureLayerTilingSet::RemoveTilesInRegion(const Region& region) { | 100 void PictureLayerTilingSet::RemoveTilesInRegion(const Region& region) { |
| 102 for (size_t i = 0; i < tilings_.size(); ++i) | 101 for (size_t i = 0; i < tilings_.size(); ++i) |
| 103 tilings_[i]->RemoveTilesInRegion(region); | 102 tilings_[i]->Invalidate(region); |
| 104 } | 103 } |
| 105 | 104 |
| 106 PictureLayerTiling* PictureLayerTilingSet::AddTiling(float contents_scale) { | 105 PictureLayerTiling* PictureLayerTilingSet::AddTiling(float contents_scale) { |
| 107 for (size_t i = 0; i < tilings_.size(); ++i) | 106 for (size_t i = 0; i < tilings_.size(); ++i) |
| 108 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale); | 107 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale); |
| 109 | 108 |
| 110 tilings_.push_back(PictureLayerTiling::Create(contents_scale, | 109 tilings_.push_back(PictureLayerTiling::Create(contents_scale, |
| 111 layer_bounds_, | 110 layer_bounds_, |
| 112 client_)); | 111 client_)); |
| 113 PictureLayerTiling* appended = tilings_.back(); | 112 PictureLayerTiling* appended = tilings_.back(); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 PictureLayerTilingSet::CoverageIterator::operator bool() const { | 304 PictureLayerTilingSet::CoverageIterator::operator bool() const { |
| 306 return current_tiling_ < static_cast<int>(set_->tilings_.size()) || | 305 return current_tiling_ < static_cast<int>(set_->tilings_.size()) || |
| 307 region_iter_.has_rect(); | 306 region_iter_.has_rect(); |
| 308 } | 307 } |
| 309 | 308 |
| 310 void PictureLayerTilingSet::DidBecomeActive() { | 309 void PictureLayerTilingSet::DidBecomeActive() { |
| 311 for (size_t i = 0; i < tilings_.size(); ++i) | 310 for (size_t i = 0; i < tilings_.size(); ++i) |
| 312 tilings_[i]->DidBecomeActive(); | 311 tilings_[i]->DidBecomeActive(); |
| 313 } | 312 } |
| 314 | 313 |
| 315 void PictureLayerTilingSet::DidBecomeRecycled() { | |
| 316 for (size_t i = 0; i < tilings_.size(); ++i) | |
| 317 tilings_[i]->DidBecomeRecycled(); | |
| 318 } | |
| 319 | |
| 320 scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const { | 314 scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const { |
| 321 scoped_ptr<base::ListValue> state(new base::ListValue()); | 315 scoped_ptr<base::ListValue> state(new base::ListValue()); |
| 322 for (size_t i = 0; i < tilings_.size(); ++i) | 316 for (size_t i = 0; i < tilings_.size(); ++i) |
| 323 state->Append(tilings_[i]->AsValue().release()); | 317 state->Append(tilings_[i]->AsValue().release()); |
| 324 return state.PassAs<base::Value>(); | 318 return state.PassAs<base::Value>(); |
| 325 } | 319 } |
| 326 | 320 |
| 327 size_t PictureLayerTilingSet::GPUMemoryUsageInBytes() const { | 321 size_t PictureLayerTilingSet::GPUMemoryUsageInBytes() const { |
| 328 size_t amount = 0; | 322 size_t amount = 0; |
| 329 for (size_t i = 0; i < tilings_.size(); ++i) | 323 for (size_t i = 0; i < tilings_.size(); ++i) |
| 330 amount += tilings_[i]->GPUMemoryUsageInBytes(); | 324 amount += tilings_[i]->GPUMemoryUsageInBytes(); |
| 331 return amount; | 325 return amount; |
| 332 } | 326 } |
| 333 | 327 |
| 334 } // namespace cc | 328 } // namespace cc |
| OLD | NEW |