Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: cc/tiles/picture_layer_tiling_set.cc

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/tiles/picture_layer_tiling_set.h ('k') | cc/tiles/picture_layer_tiling_set_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/memory/ptr_util.h"
13 #include "cc/playback/raster_source.h" 14 #include "cc/playback/raster_source.h"
14 15
15 namespace cc { 16 namespace cc {
16 17
17 namespace { 18 namespace {
18 19
19 class LargestToSmallestScaleFunctor { 20 class LargestToSmallestScaleFunctor {
20 public: 21 public:
21 bool operator()(const scoped_ptr<PictureLayerTiling>& left, 22 bool operator()(const std::unique_ptr<PictureLayerTiling>& left,
22 const scoped_ptr<PictureLayerTiling>& right) { 23 const std::unique_ptr<PictureLayerTiling>& right) {
23 return left->contents_scale() > right->contents_scale(); 24 return left->contents_scale() > right->contents_scale();
24 } 25 }
25 }; 26 };
26 27
27 inline float LargerRatio(float float1, float float2) { 28 inline float LargerRatio(float float1, float float2) {
28 DCHECK_GT(float1, 0.f); 29 DCHECK_GT(float1, 0.f);
29 DCHECK_GT(float2, 0.f); 30 DCHECK_GT(float2, 0.f);
30 return float1 > float2 ? float1 / float2 : float2 / float1; 31 return float1 > float2 ? float1 / float2 : float2 / float1;
31 } 32 }
32 33
33 } // namespace 34 } // namespace
34 35
35 // static 36 // static
36 scoped_ptr<PictureLayerTilingSet> PictureLayerTilingSet::Create( 37 std::unique_ptr<PictureLayerTilingSet> PictureLayerTilingSet::Create(
37 WhichTree tree, 38 WhichTree tree,
38 PictureLayerTilingClient* client, 39 PictureLayerTilingClient* client,
39 size_t tiling_interest_area_padding, 40 size_t tiling_interest_area_padding,
40 float skewport_target_time_in_seconds, 41 float skewport_target_time_in_seconds,
41 int skewport_extrapolation_limit_in_content_pixels) { 42 int skewport_extrapolation_limit_in_content_pixels) {
42 return make_scoped_ptr(new PictureLayerTilingSet( 43 return base::WrapUnique(new PictureLayerTilingSet(
43 tree, client, tiling_interest_area_padding, 44 tree, client, tiling_interest_area_padding,
44 skewport_target_time_in_seconds, 45 skewport_target_time_in_seconds,
45 skewport_extrapolation_limit_in_content_pixels)); 46 skewport_extrapolation_limit_in_content_pixels));
46 } 47 }
47 48
48 PictureLayerTilingSet::PictureLayerTilingSet( 49 PictureLayerTilingSet::PictureLayerTilingSet(
49 WhichTree tree, 50 WhichTree tree,
50 PictureLayerTilingClient* client, 51 PictureLayerTilingClient* client,
51 size_t tiling_interest_area_padding, 52 size_t tiling_interest_area_padding,
52 float skewport_target_time_in_seconds, 53 float skewport_target_time_in_seconds,
(...skipping 18 matching lines...) Expand all
71 // leaving behind unshared tilings that are all non-ideal. 72 // leaving behind unshared tilings that are all non-ideal.
72 RemoveAllTilings(); 73 RemoveAllTilings();
73 return; 74 return;
74 } 75 }
75 76
76 bool tiling_sort_required = false; 77 bool tiling_sort_required = false;
77 for (const auto& pending_twin_tiling : pending_twin_set->tilings_) { 78 for (const auto& pending_twin_tiling : pending_twin_set->tilings_) {
78 float contents_scale = pending_twin_tiling->contents_scale(); 79 float contents_scale = pending_twin_tiling->contents_scale();
79 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale); 80 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale);
80 if (!this_tiling) { 81 if (!this_tiling) {
81 scoped_ptr<PictureLayerTiling> new_tiling = PictureLayerTiling::Create( 82 std::unique_ptr<PictureLayerTiling> new_tiling =
82 tree_, contents_scale, raster_source, client_, 83 PictureLayerTiling::Create(
83 tiling_interest_area_padding_, skewport_target_time_in_seconds_, 84 tree_, contents_scale, raster_source, client_,
84 skewport_extrapolation_limit_in_content_pixels_); 85 tiling_interest_area_padding_, skewport_target_time_in_seconds_,
86 skewport_extrapolation_limit_in_content_pixels_);
85 tilings_.push_back(std::move(new_tiling)); 87 tilings_.push_back(std::move(new_tiling));
86 this_tiling = tilings_.back().get(); 88 this_tiling = tilings_.back().get();
87 tiling_sort_required = true; 89 tiling_sort_required = true;
88 } 90 }
89 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling.get(), 91 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling.get(),
90 layer_invalidation); 92 layer_invalidation);
91 } 93 }
92 94
93 if (tiling_sort_required) { 95 if (tiling_sort_required) {
94 std::sort(tilings_.begin(), tilings_.end(), 96 std::sort(tilings_.begin(), tilings_.end(),
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 139
138 void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSourceForCommit( 140 void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSourceForCommit(
139 scoped_refptr<RasterSource> raster_source, 141 scoped_refptr<RasterSource> raster_source,
140 const Region& layer_invalidation, 142 const Region& layer_invalidation,
141 float minimum_contents_scale, 143 float minimum_contents_scale,
142 float maximum_contents_scale) { 144 float maximum_contents_scale) {
143 RemoveTilingsBelowScale(minimum_contents_scale); 145 RemoveTilingsBelowScale(minimum_contents_scale);
144 RemoveTilingsAboveScale(maximum_contents_scale); 146 RemoveTilingsAboveScale(maximum_contents_scale);
145 147
146 // Invalidate tiles and update them to the new raster source. 148 // Invalidate tiles and update them to the new raster source.
147 for (const scoped_ptr<PictureLayerTiling>& tiling : tilings_) { 149 for (const std::unique_ptr<PictureLayerTiling>& tiling : tilings_) {
148 DCHECK(tree_ != PENDING_TREE || !tiling->has_tiles()); 150 DCHECK(tree_ != PENDING_TREE || !tiling->has_tiles());
149 tiling->SetRasterSourceAndResize(raster_source); 151 tiling->SetRasterSourceAndResize(raster_source);
150 152
151 // We can commit on either active or pending trees, but only active one can 153 // We can commit on either active or pending trees, but only active one can
152 // have tiles at this point. 154 // have tiles at this point.
153 if (tree_ == ACTIVE_TREE) 155 if (tree_ == ACTIVE_TREE)
154 tiling->Invalidate(layer_invalidation); 156 tiling->Invalidate(layer_invalidation);
155 157
156 // This is needed for cases where the live tiles rect didn't change but 158 // This is needed for cases where the live tiles rect didn't change but
157 // recordings exist in the raster source that did not exist on the last 159 // recordings exist in the raster source that did not exist on the last
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 231
230 for (auto* tiling : to_remove) { 232 for (auto* tiling : to_remove) {
231 DCHECK_NE(HIGH_RESOLUTION, tiling->resolution()); 233 DCHECK_NE(HIGH_RESOLUTION, tiling->resolution());
232 Remove(tiling); 234 Remove(tiling);
233 } 235 }
234 } 236 }
235 237
236 void PictureLayerTilingSet::RemoveNonIdealTilings() { 238 void PictureLayerTilingSet::RemoveNonIdealTilings() {
237 auto to_remove = 239 auto to_remove =
238 std::remove_if(tilings_.begin(), tilings_.end(), 240 std::remove_if(tilings_.begin(), tilings_.end(),
239 [](const scoped_ptr<PictureLayerTiling>& t) { 241 [](const std::unique_ptr<PictureLayerTiling>& t) {
240 return t->resolution() == NON_IDEAL_RESOLUTION; 242 return t->resolution() == NON_IDEAL_RESOLUTION;
241 }); 243 });
242 tilings_.erase(to_remove, tilings_.end()); 244 tilings_.erase(to_remove, tilings_.end());
243 } 245 }
244 246
245 void PictureLayerTilingSet::MarkAllTilingsNonIdeal() { 247 void PictureLayerTilingSet::MarkAllTilingsNonIdeal() {
246 for (const auto& tiling : tilings_) 248 for (const auto& tiling : tilings_)
247 tiling->set_resolution(NON_IDEAL_RESOLUTION); 249 tiling->set_resolution(NON_IDEAL_RESOLUTION);
248 } 250 }
249 251
(...skipping 10 matching lines...) Expand all
260 tiling_interest_area_padding_, skewport_target_time_in_seconds_, 262 tiling_interest_area_padding_, skewport_target_time_in_seconds_,
261 skewport_extrapolation_limit_in_content_pixels_)); 263 skewport_extrapolation_limit_in_content_pixels_));
262 PictureLayerTiling* appended = tilings_.back().get(); 264 PictureLayerTiling* appended = tilings_.back().get();
263 265
264 std::sort(tilings_.begin(), tilings_.end(), LargestToSmallestScaleFunctor()); 266 std::sort(tilings_.begin(), tilings_.end(), LargestToSmallestScaleFunctor());
265 return appended; 267 return appended;
266 } 268 }
267 269
268 int PictureLayerTilingSet::NumHighResTilings() const { 270 int PictureLayerTilingSet::NumHighResTilings() const {
269 return std::count_if(tilings_.begin(), tilings_.end(), 271 return std::count_if(tilings_.begin(), tilings_.end(),
270 [](const scoped_ptr<PictureLayerTiling>& tiling) { 272 [](const std::unique_ptr<PictureLayerTiling>& tiling) {
271 return tiling->resolution() == HIGH_RESOLUTION; 273 return tiling->resolution() == HIGH_RESOLUTION;
272 }); 274 });
273 } 275 }
274 276
275 PictureLayerTiling* PictureLayerTilingSet::FindTilingWithScale( 277 PictureLayerTiling* PictureLayerTilingSet::FindTilingWithScale(
276 float scale) const { 278 float scale) const {
277 for (size_t i = 0; i < tilings_.size(); ++i) { 279 for (size_t i = 0; i < tilings_.size(); ++i) {
278 if (tilings_[i]->contents_scale() == scale) 280 if (tilings_[i]->contents_scale() == scale)
279 return tilings_[i].get(); 281 return tilings_[i].get();
280 } 282 }
281 return nullptr; 283 return nullptr;
282 } 284 }
283 285
284 PictureLayerTiling* PictureLayerTilingSet::FindTilingWithResolution( 286 PictureLayerTiling* PictureLayerTilingSet::FindTilingWithResolution(
285 TileResolution resolution) const { 287 TileResolution resolution) const {
286 auto iter = 288 auto iter = std::find_if(
287 std::find_if(tilings_.begin(), tilings_.end(), 289 tilings_.begin(), tilings_.end(),
288 [resolution](const scoped_ptr<PictureLayerTiling>& tiling) { 290 [resolution](const std::unique_ptr<PictureLayerTiling>& tiling) {
289 return tiling->resolution() == resolution; 291 return tiling->resolution() == resolution;
290 }); 292 });
291 if (iter == tilings_.end()) 293 if (iter == tilings_.end())
292 return nullptr; 294 return nullptr;
293 return iter->get(); 295 return iter->get();
294 } 296 }
295 297
296 void PictureLayerTilingSet::RemoveTilingsBelowScale(float minimum_scale) { 298 void PictureLayerTilingSet::RemoveTilingsBelowScale(float minimum_scale) {
297 auto to_remove = std::remove_if( 299 auto to_remove = std::remove_if(
298 tilings_.begin(), tilings_.end(), 300 tilings_.begin(), tilings_.end(),
299 [minimum_scale](const scoped_ptr<PictureLayerTiling>& tiling) { 301 [minimum_scale](const std::unique_ptr<PictureLayerTiling>& tiling) {
300 return tiling->contents_scale() < minimum_scale; 302 return tiling->contents_scale() < minimum_scale;
301 }); 303 });
302 tilings_.erase(to_remove, tilings_.end()); 304 tilings_.erase(to_remove, tilings_.end());
303 } 305 }
304 306
305 void PictureLayerTilingSet::RemoveTilingsAboveScale(float maximum_scale) { 307 void PictureLayerTilingSet::RemoveTilingsAboveScale(float maximum_scale) {
306 auto to_remove = std::remove_if( 308 auto to_remove = std::remove_if(
307 tilings_.begin(), tilings_.end(), 309 tilings_.begin(), tilings_.end(),
308 [maximum_scale](const scoped_ptr<PictureLayerTiling>& tiling) { 310 [maximum_scale](const std::unique_ptr<PictureLayerTiling>& tiling) {
309 return tiling->contents_scale() > maximum_scale; 311 return tiling->contents_scale() > maximum_scale;
310 }); 312 });
311 tilings_.erase(to_remove, tilings_.end()); 313 tilings_.erase(to_remove, tilings_.end());
312 } 314 }
313 315
314 void PictureLayerTilingSet::RemoveAllTilings() { 316 void PictureLayerTilingSet::RemoveAllTilings() {
315 tilings_.clear(); 317 tilings_.clear();
316 } 318 }
317 319
318 void PictureLayerTilingSet::Remove(PictureLayerTiling* tiling) { 320 void PictureLayerTilingSet::Remove(PictureLayerTiling* tiling) {
319 auto iter = 321 auto iter = std::find_if(
320 std::find_if(tilings_.begin(), tilings_.end(), 322 tilings_.begin(), tilings_.end(),
321 [tiling](const scoped_ptr<PictureLayerTiling>& candidate) { 323 [tiling](const std::unique_ptr<PictureLayerTiling>& candidate) {
322 return candidate.get() == tiling; 324 return candidate.get() == tiling;
323 }); 325 });
324 if (iter == tilings_.end()) 326 if (iter == tilings_.end())
325 return; 327 return;
326 tilings_.erase(iter); 328 tilings_.erase(iter);
327 } 329 }
328 330
329 void PictureLayerTilingSet::RemoveAllTiles() { 331 void PictureLayerTilingSet::RemoveAllTiles() {
330 for (size_t i = 0; i < tilings_.size(); ++i) 332 for (size_t i = 0; i < tilings_.size(); ++i)
331 tilings_[i]->Reset(); 333 tilings_[i]->Reset();
332 } 334 }
333 335
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 case LOWER_THAN_LOW_RES: 588 case LOWER_THAN_LOW_RES:
587 range = TilingRange(low_res_range.end, tilings_size); 589 range = TilingRange(low_res_range.end, tilings_size);
588 break; 590 break;
589 } 591 }
590 592
591 DCHECK_LE(range.start, range.end); 593 DCHECK_LE(range.start, range.end);
592 return range; 594 return range;
593 } 595 }
594 596
595 } // namespace cc 597 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/picture_layer_tiling_set.h ('k') | cc/tiles/picture_layer_tiling_set_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698