Chromium Code Reviews| 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/tiles/picture_layer_tiling_set.h" | 5 #include "cc/tiles/picture_layer_tiling_set.h" | 
| 6 | 6 | 
| 7 #include <stddef.h> | 7 #include <stddef.h> | 
| 8 | 8 | 
| 9 #include <limits> | 9 #include <limits> | 
| 10 #include <set> | 10 #include <set> | 
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 74 // If the twin (pending) tiling set is empty, it was not updated for the | 74 // If the twin (pending) tiling set is empty, it was not updated for the | 
| 75 // current frame. So we drop tilings from our set as well, instead of | 75 // current frame. So we drop tilings from our set as well, instead of | 
| 76 // leaving behind unshared tilings that are all non-ideal. | 76 // leaving behind unshared tilings that are all non-ideal. | 
| 77 RemoveAllTilings(); | 77 RemoveAllTilings(); | 
| 78 return; | 78 return; | 
| 79 } | 79 } | 
| 80 | 80 | 
| 81 bool tiling_sort_required = false; | 81 bool tiling_sort_required = false; | 
| 82 for (const auto& pending_twin_tiling : pending_twin_set->tilings_) { | 82 for (const auto& pending_twin_tiling : pending_twin_set->tilings_) { | 
| 83 float contents_scale = pending_twin_tiling->contents_scale(); | 83 float contents_scale = pending_twin_tiling->contents_scale(); | 
| 84 gfx::Vector2dF contents_translation = | |
| 85 pending_twin_tiling->contents_translation(); | |
| 84 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale); | 86 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale); | 
| 
 
enne (OOO)
2016/08/22 22:57:39
What if there are multiple tilings with the same s
 
trchen
2016/08/29 10:14:48
Currently the easiest thing to do is to replace. I
 
 | |
| 85 if (!this_tiling) { | 87 if (!this_tiling) { | 
| 86 std::unique_ptr<PictureLayerTiling> new_tiling(new PictureLayerTiling( | 88 std::unique_ptr<PictureLayerTiling> new_tiling( | 
| 87 tree_, contents_scale, raster_source_, client_)); | 89 new PictureLayerTiling(tree_, contents_scale, contents_translation, | 
| 90 raster_source_, client_)); | |
| 88 tilings_.push_back(std::move(new_tiling)); | 91 tilings_.push_back(std::move(new_tiling)); | 
| 89 this_tiling = tilings_.back().get(); | 92 this_tiling = tilings_.back().get(); | 
| 90 tiling_sort_required = true; | 93 tiling_sort_required = true; | 
| 91 state_since_last_tile_priority_update_.added_tilings = true; | 94 state_since_last_tile_priority_update_.added_tilings = true; | 
| 92 } | 95 } | 
| 93 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling.get(), | 96 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling.get(), | 
| 94 layer_invalidation); | 97 layer_invalidation); | 
| 95 } | 98 } | 
| 96 | 99 | 
| 97 if (tiling_sort_required) { | 100 if (tiling_sort_required) { | 
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 255 tilings_.erase(to_remove, tilings_.end()); | 258 tilings_.erase(to_remove, tilings_.end()); | 
| 256 } | 259 } | 
| 257 | 260 | 
| 258 void PictureLayerTilingSet::MarkAllTilingsNonIdeal() { | 261 void PictureLayerTilingSet::MarkAllTilingsNonIdeal() { | 
| 259 for (const auto& tiling : tilings_) | 262 for (const auto& tiling : tilings_) | 
| 260 tiling->set_resolution(NON_IDEAL_RESOLUTION); | 263 tiling->set_resolution(NON_IDEAL_RESOLUTION); | 
| 261 } | 264 } | 
| 262 | 265 | 
| 263 PictureLayerTiling* PictureLayerTilingSet::AddTiling( | 266 PictureLayerTiling* PictureLayerTilingSet::AddTiling( | 
| 264 float contents_scale, | 267 float contents_scale, | 
| 268 const gfx::Vector2dF& contents_translation, | |
| 265 scoped_refptr<RasterSource> raster_source) { | 269 scoped_refptr<RasterSource> raster_source) { | 
| 266 if (!raster_source_) | 270 if (!raster_source_) | 
| 267 raster_source_ = raster_source; | 271 raster_source_ = raster_source; | 
| 268 | 272 | 
| 269 for (size_t i = 0; i < tilings_.size(); ++i) { | 273 for (size_t i = 0; i < tilings_.size(); ++i) { | 
| 270 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale); | 274 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale); | 
| 271 DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get()); | 275 DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get()); | 
| 272 } | 276 } | 
| 273 | 277 | 
| 274 tilings_.push_back(base::WrapUnique( | 278 tilings_.push_back(base::WrapUnique(new PictureLayerTiling( | 
| 275 new PictureLayerTiling(tree_, contents_scale, raster_source, client_))); | 279 tree_, contents_scale, contents_translation, raster_source, client_))); | 
| 276 PictureLayerTiling* appended = tilings_.back().get(); | 280 PictureLayerTiling* appended = tilings_.back().get(); | 
| 277 state_since_last_tile_priority_update_.added_tilings = true; | 281 state_since_last_tile_priority_update_.added_tilings = true; | 
| 278 | 282 | 
| 279 std::sort(tilings_.begin(), tilings_.end(), LargestToSmallestScaleFunctor()); | 283 std::sort(tilings_.begin(), tilings_.end(), LargestToSmallestScaleFunctor()); | 
| 280 return appended; | 284 return appended; | 
| 281 } | 285 } | 
| 282 | 286 | 
| 283 int PictureLayerTilingSet::NumHighResTilings() const { | 287 int PictureLayerTilingSet::NumHighResTilings() const { | 
| 284 return std::count_if(tilings_.begin(), tilings_.end(), | 288 return std::count_if(tilings_.begin(), tilings_.end(), | 
| 285 [](const std::unique_ptr<PictureLayerTiling>& tiling) { | 289 [](const std::unique_ptr<PictureLayerTiling>& tiling) { | 
| (...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 748 case LOWER_THAN_LOW_RES: | 752 case LOWER_THAN_LOW_RES: | 
| 749 range = TilingRange(low_res_range.end, tilings_size); | 753 range = TilingRange(low_res_range.end, tilings_size); | 
| 750 break; | 754 break; | 
| 751 } | 755 } | 
| 752 | 756 | 
| 753 DCHECK_LE(range.start, range.end); | 757 DCHECK_LE(range.start, range.end); | 
| 754 return range; | 758 return range; | 
| 755 } | 759 } | 
| 756 | 760 | 
| 757 } // namespace cc | 761 } // namespace cc | 
| OLD | NEW |