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

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

Issue 12865017: Makes tile-creation lazy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: a bug fix and removal of several now useless functions Created 7 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 | Annotate | Revision Log
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/resources/picture_layer_tiling_set.h" 5 #include "cc/resources/picture_layer_tiling_set.h"
6 6
7 namespace cc { 7 namespace cc {
8 8
9 namespace { 9 namespace {
10 10
(...skipping 16 matching lines...) Expand all
27 } 27 }
28 28
29 void PictureLayerTilingSet::SetClient(PictureLayerTilingClient* client) { 29 void PictureLayerTilingSet::SetClient(PictureLayerTilingClient* client) {
30 client_ = client; 30 client_ = client;
31 for (size_t i = 0; i < tilings_.size(); ++i) 31 for (size_t i = 0; i < tilings_.size(); ++i)
32 tilings_[i]->SetClient(client_); 32 tilings_[i]->SetClient(client_);
33 } 33 }
34 34
35 void PictureLayerTilingSet::CloneAll( 35 void PictureLayerTilingSet::CloneAll(
36 const PictureLayerTilingSet& other, 36 const PictureLayerTilingSet& other,
37 const Region& invalidation,
38 float minimum_contents_scale) { 37 float minimum_contents_scale) {
39 tilings_.clear(); 38 tilings_.clear();
40 tilings_.reserve(other.tilings_.size()); 39 tilings_.reserve(other.tilings_.size());
41 for (size_t i = 0; i < other.tilings_.size(); ++i) { 40 for (size_t i = 0; i < other.tilings_.size(); ++i) {
42 if (other.tilings_[i]->contents_scale() < minimum_contents_scale) 41 if (other.tilings_[i]->contents_scale() < minimum_contents_scale)
43 continue; 42 continue;
44 Clone(other.tilings_[i], invalidation); 43 Clone(other.tilings_[i]);
45 } 44 }
46 } 45 }
47 46
48 void PictureLayerTilingSet::Clone( 47 void PictureLayerTilingSet::Clone(
49 const PictureLayerTiling* tiling, 48 const PictureLayerTiling* tiling) {
enne (OOO) 2013/03/29 20:50:58 style nit: this can fit on one line now.
whunt 2013/03/29 21:52:04 Done.
50 const Region& invalidation) {
51 49
52 for (size_t i = 0; i < tilings_.size(); ++i) 50 for (size_t i = 0; i < tilings_.size(); ++i)
53 DCHECK_NE(tilings_[i]->contents_scale(), tiling->contents_scale()); 51 DCHECK_NE(tilings_[i]->contents_scale(), tiling->contents_scale());
54 52
55 tilings_.push_back(tiling->Clone()); 53 tilings_.push_back(tiling->Clone());
56 gfx::Size size = tilings_.back()->layer_bounds(); 54 gfx::Size size = tilings_.back()->layer_bounds();
57 tilings_.back()->SetClient(client_); 55 tilings_.back()->SetClient(client_);
58 tilings_.back()->Invalidate(invalidation);
59 // Intentionally use this set's layer bounds, as it may have changed. 56 // Intentionally use this set's layer bounds, as it may have changed.
60 tilings_.back()->SetLayerBounds(layer_bounds_); 57 tilings_.back()->SetLayerBounds(layer_bounds_);
61 58
62 tilings_.sort(LargestToSmallestScaleFunctor()); 59 tilings_.sort(LargestToSmallestScaleFunctor());
63 } 60 }
64 61
65 void PictureLayerTilingSet::SetLayerBounds(gfx::Size layer_bounds) { 62 void PictureLayerTilingSet::SetLayerBounds(gfx::Size layer_bounds) {
66 if (layer_bounds_ == layer_bounds) 63 if (layer_bounds_ == layer_bounds)
67 return; 64 return;
68 layer_bounds_ = layer_bounds; 65 layer_bounds_ = layer_bounds;
69 for (size_t i = 0; i < tilings_.size(); ++i) 66 for (size_t i = 0; i < tilings_.size(); ++i)
70 tilings_[i]->SetLayerBounds(layer_bounds); 67 tilings_[i]->SetLayerBounds(layer_bounds);
71 } 68 }
72 69
73 gfx::Size PictureLayerTilingSet::LayerBounds() const { 70 gfx::Size PictureLayerTilingSet::LayerBounds() const {
74 return layer_bounds_; 71 return layer_bounds_;
75 } 72 }
76 73
77 void PictureLayerTilingSet::Invalidate(const Region& layer_invalidation) {
78 for (size_t i = 0; i < tilings_.size(); ++i)
79 tilings_[i]->Invalidate(layer_invalidation);
80 }
81
82 PictureLayerTiling* PictureLayerTilingSet::AddTiling(float contents_scale) { 74 PictureLayerTiling* PictureLayerTilingSet::AddTiling(float contents_scale) {
83 tilings_.push_back(PictureLayerTiling::Create(contents_scale)); 75 tilings_.push_back(PictureLayerTiling::Create(contents_scale));
84 PictureLayerTiling* appended = tilings_.back(); 76 PictureLayerTiling* appended = tilings_.back();
85 appended->SetClient(client_); 77 appended->SetClient(client_);
86 appended->SetLayerBounds(layer_bounds_); 78 appended->SetLayerBounds(layer_bounds_);
87 79
88 tilings_.sort(LargestToSmallestScaleFunctor()); 80 tilings_.sort(LargestToSmallestScaleFunctor());
89 return appended; 81 return appended;
90 } 82 }
91 83
92 void PictureLayerTilingSet::RemoveAllTilings() { 84 void PictureLayerTilingSet::RemoveAllTilings() {
93 tilings_.clear(); 85 tilings_.clear();
94 } 86 }
95 87
96 void PictureLayerTilingSet::Remove(PictureLayerTiling* tiling) { 88 void PictureLayerTilingSet::Remove(PictureLayerTiling* tiling) {
97 ScopedPtrVector<PictureLayerTiling>::iterator iter = 89 ScopedPtrVector<PictureLayerTiling>::iterator iter =
98 std::find(tilings_.begin(), tilings_.end(), tiling); 90 std::find(tilings_.begin(), tilings_.end(), tiling);
99 if (iter == tilings_.end()) 91 if (iter == tilings_.end())
100 return; 92 return;
101 tilings_.erase(iter); 93 tilings_.erase(iter);
102 } 94 }
103 95
104 void PictureLayerTilingSet::RemoveAllTiles() { 96 void PictureLayerTilingSet::RemoveAllTiles() {
105 for (size_t i = 0; i < tilings_.size(); ++i) 97 for (size_t i = 0; i < tilings_.size(); ++i)
106 tilings_[i]->Reset(); 98 tilings_[i]->Reset();
107 } 99 }
108 100
109 void PictureLayerTilingSet::CreateTilesFromLayerRect(gfx::Rect layer_rect) {
110 for (size_t i = 0; i < tilings_.size(); ++i)
111 tilings_[i]->CreateTilesFromLayerRect(layer_rect);
112 }
113
114 PictureLayerTilingSet::Iterator::Iterator( 101 PictureLayerTilingSet::Iterator::Iterator(
115 const PictureLayerTilingSet* set, 102 const PictureLayerTilingSet* set,
116 float contents_scale, 103 float contents_scale,
117 gfx::Rect content_rect, 104 gfx::Rect content_rect,
118 float ideal_contents_scale) 105 float ideal_contents_scale)
119 : set_(set), 106 : set_(set),
120 contents_scale_(contents_scale), 107 contents_scale_(contents_scale),
121 ideal_contents_scale_(ideal_contents_scale), 108 ideal_contents_scale_(ideal_contents_scale),
122 current_tiling_(-1) { 109 current_tiling_(-1) {
123 missing_region_.Union(content_rect); 110 missing_region_.Union(content_rect);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 } 293 }
307 294
308 scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const { 295 scoped_ptr<base::Value> PictureLayerTilingSet::AsValue() const {
309 scoped_ptr<base::ListValue> state(new base::ListValue()); 296 scoped_ptr<base::ListValue> state(new base::ListValue());
310 for (size_t i = 0; i < tilings_.size(); ++i) 297 for (size_t i = 0; i < tilings_.size(); ++i)
311 state->Append(tilings_[i]->AsValue().release()); 298 state->Append(tilings_[i]->AsValue().release());
312 return state.PassAs<base::Value>(); 299 return state.PassAs<base::Value>();
313 } 300 }
314 301
315 } // namespace cc 302 } // namespace cc
OLDNEW
« cc/resources/picture_layer_tiling.cc ('K') | « cc/resources/picture_layer_tiling_set.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698