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

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

Issue 362073002: cc: Remove all traces of SkPicture cloning. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 4 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
« no previous file with comments | « cc/resources/picture_pile_base.h ('k') | cc/resources/picture_pile_impl.h » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_pile_base.h" 5 #include "cc/resources/picture_pile_base.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 slow_down_raster_scale_factor_for_debug_( 65 slow_down_raster_scale_factor_for_debug_(
66 other->slow_down_raster_scale_factor_for_debug_), 66 other->slow_down_raster_scale_factor_for_debug_),
67 contents_opaque_(other->contents_opaque_), 67 contents_opaque_(other->contents_opaque_),
68 contents_fill_bounds_completely_(other->contents_fill_bounds_completely_), 68 contents_fill_bounds_completely_(other->contents_fill_bounds_completely_),
69 show_debug_picture_borders_(other->show_debug_picture_borders_), 69 show_debug_picture_borders_(other->show_debug_picture_borders_),
70 clear_canvas_with_debug_color_(other->clear_canvas_with_debug_color_), 70 clear_canvas_with_debug_color_(other->clear_canvas_with_debug_color_),
71 has_any_recordings_(other->has_any_recordings_), 71 has_any_recordings_(other->has_any_recordings_),
72 has_text_(other->has_text_) { 72 has_text_(other->has_text_) {
73 } 73 }
74 74
75 PicturePileBase::PicturePileBase(const PicturePileBase* other,
76 unsigned thread_index)
77 : tiling_(other->tiling_),
78 recorded_viewport_(other->recorded_viewport_),
79 min_contents_scale_(other->min_contents_scale_),
80 tile_grid_info_(other->tile_grid_info_),
81 background_color_(other->background_color_),
82 slow_down_raster_scale_factor_for_debug_(
83 other->slow_down_raster_scale_factor_for_debug_),
84 contents_opaque_(other->contents_opaque_),
85 contents_fill_bounds_completely_(other->contents_fill_bounds_completely_),
86 show_debug_picture_borders_(other->show_debug_picture_borders_),
87 clear_canvas_with_debug_color_(other->clear_canvas_with_debug_color_),
88 has_any_recordings_(other->has_any_recordings_),
89 has_text_(other->has_text_) {
90 for (PictureMap::const_iterator it = other->picture_map_.begin();
91 it != other->picture_map_.end();
92 ++it) {
93 picture_map_[it->first] = it->second.CloneForThread(thread_index);
94 }
95 }
96
97 PicturePileBase::~PicturePileBase() { 75 PicturePileBase::~PicturePileBase() {
98 } 76 }
99 77
100 void PicturePileBase::SetMinContentsScale(float min_contents_scale) { 78 void PicturePileBase::SetMinContentsScale(float min_contents_scale) {
101 DCHECK(min_contents_scale); 79 DCHECK(min_contents_scale);
102 if (min_contents_scale_ == min_contents_scale) 80 if (min_contents_scale_ == min_contents_scale)
103 return; 81 return;
104 82
105 // Picture contents are played back scaled. When the final contents scale is 83 // Picture contents are played back scaled. When the final contents scale is
106 // less than 1 (i.e. low res), then multiple recorded pixels will be used 84 // less than 1 (i.e. low res), then multiple recorded pixels will be used
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 ++tile_iter) { 162 ++tile_iter) {
185 PictureMap::const_iterator map_iter = picture_map_.find(tile_iter.index()); 163 PictureMap::const_iterator map_iter = picture_map_.find(tile_iter.index());
186 if (map_iter == picture_map_.end()) 164 if (map_iter == picture_map_.end())
187 return false; 165 return false;
188 if (!map_iter->second.GetPicture()) 166 if (!map_iter->second.GetPicture())
189 return false; 167 return false;
190 } 168 }
191 return true; 169 return true;
192 } 170 }
193 171
194 gfx::Rect PicturePileBase::PaddedRect(const PictureMapKey& key) { 172 gfx::Rect PicturePileBase::PaddedRect(const PictureMapKey& key) const {
195 gfx::Rect tile = tiling_.TileBounds(key.first, key.second); 173 gfx::Rect tile = tiling_.TileBounds(key.first, key.second);
196 return PadRect(tile); 174 return PadRect(tile);
197 } 175 }
198 176
199 gfx::Rect PicturePileBase::PadRect(const gfx::Rect& rect) { 177 gfx::Rect PicturePileBase::PadRect(const gfx::Rect& rect) const {
200 gfx::Rect padded_rect = rect; 178 gfx::Rect padded_rect = rect;
201 padded_rect.Inset( 179 padded_rect.Inset(
202 -buffer_pixels(), -buffer_pixels(), -buffer_pixels(), -buffer_pixels()); 180 -buffer_pixels(), -buffer_pixels(), -buffer_pixels(), -buffer_pixels());
203 return padded_rect; 181 return padded_rect;
204 } 182 }
205 183
206 void PicturePileBase::AsValueInto(base::debug::TracedValue* pictures) const { 184 void PicturePileBase::AsValueInto(base::debug::TracedValue* pictures) const {
207 gfx::Rect tiling_rect(tiling_.tiling_size()); 185 gfx::Rect tiling_rect(tiling_.tiling_size());
208 std::set<void*> appended_pictures; 186 std::set<const void*> appended_pictures;
209 bool include_borders = true; 187 bool include_borders = true;
210 for (TilingData::Iterator tile_iter(&tiling_, tiling_rect, include_borders); 188 for (TilingData::Iterator tile_iter(&tiling_, tiling_rect, include_borders);
211 tile_iter; 189 tile_iter;
212 ++tile_iter) { 190 ++tile_iter) {
213 PictureMap::const_iterator map_iter = picture_map_.find(tile_iter.index()); 191 PictureMap::const_iterator map_iter = picture_map_.find(tile_iter.index());
214 if (map_iter == picture_map_.end()) 192 if (map_iter == picture_map_.end())
215 continue; 193 continue;
216 194
217 Picture* picture = map_iter->second.GetPicture(); 195 const Picture* picture = map_iter->second.GetPicture();
218 if (picture && (appended_pictures.count(picture) == 0)) { 196 if (picture && (appended_pictures.count(picture) == 0)) {
219 appended_pictures.insert(picture); 197 appended_pictures.insert(picture);
220 TracedValue::AppendIDRef(picture, pictures); 198 TracedValue::AppendIDRef(picture, pictures);
221 } 199 }
222 } 200 }
223 } 201 }
224 202
225 PicturePileBase::PictureInfo::PictureInfo() : last_frame_number_(0) {} 203 PicturePileBase::PictureInfo::PictureInfo() : last_frame_number_(0) {}
226 204
227 PicturePileBase::PictureInfo::~PictureInfo() {} 205 PicturePileBase::PictureInfo::~PictureInfo() {}
(...skipping 27 matching lines...) Expand all
255 // threshold). 233 // threshold).
256 return !picture_ && 234 return !picture_ &&
257 ((distance_to_visible <= kFrequentInvalidationDistanceThreshold) || 235 ((distance_to_visible <= kFrequentInvalidationDistanceThreshold) ||
258 (GetInvalidationFrequency() < kInvalidationFrequencyThreshold)); 236 (GetInvalidationFrequency() < kInvalidationFrequencyThreshold));
259 } 237 }
260 238
261 void PicturePileBase::PictureInfo::SetPicture(scoped_refptr<Picture> picture) { 239 void PicturePileBase::PictureInfo::SetPicture(scoped_refptr<Picture> picture) {
262 picture_ = picture; 240 picture_ = picture;
263 } 241 }
264 242
265 Picture* PicturePileBase::PictureInfo::GetPicture() const { 243 const Picture* PicturePileBase::PictureInfo::GetPicture() const {
266 return picture_.get(); 244 return picture_.get();
267 } 245 }
268 246
269 PicturePileBase::PictureInfo PicturePileBase::PictureInfo::CloneForThread(
270 int thread_index) const {
271 PictureInfo info = *this;
272 if (picture_.get())
273 info.picture_ = picture_->GetCloneForDrawingOnThread(thread_index);
274 return info;
275 }
276
277 float PicturePileBase::PictureInfo::GetInvalidationFrequency() const { 247 float PicturePileBase::PictureInfo::GetInvalidationFrequency() const {
278 return invalidation_history_.count() / 248 return invalidation_history_.count() /
279 static_cast<float>(INVALIDATION_FRAMES_TRACKED); 249 static_cast<float>(INVALIDATION_FRAMES_TRACKED);
280 } 250 }
281 251
282 } // namespace cc 252 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_pile_base.h ('k') | cc/resources/picture_pile_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698