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/layers/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 231 for (PictureLayerTilingSet::CoverageIterator iter( | 231 for (PictureLayerTilingSet::CoverageIterator iter( |
| 232 tilings_.get(), contents_scale_x(), rect, ideal_contents_scale_); | 232 tilings_.get(), contents_scale_x(), rect, ideal_contents_scale_); |
| 233 iter; | 233 iter; |
| 234 ++iter) { | 234 ++iter) { |
| 235 gfx::Rect geometry_rect = iter.geometry_rect(); | 235 gfx::Rect geometry_rect = iter.geometry_rect(); |
| 236 gfx::Rect visible_geometry_rect = | 236 gfx::Rect visible_geometry_rect = |
| 237 quad_sink->UnoccludedContentRect(geometry_rect, draw_transform()); | 237 quad_sink->UnoccludedContentRect(geometry_rect, draw_transform()); |
| 238 if (visible_geometry_rect.IsEmpty()) | 238 if (visible_geometry_rect.IsEmpty()) |
| 239 continue; | 239 continue; |
| 240 | 240 |
| 241 append_quads_data->visible_content_area += | |
| 242 visible_geometry_rect.width() * visible_geometry_rect.height(); | |
| 243 | |
| 241 if (!*iter || !iter->IsReadyToDraw()) { | 244 if (!*iter || !iter->IsReadyToDraw()) { |
| 242 if (draw_checkerboard_for_missing_tiles()) { | 245 if (draw_checkerboard_for_missing_tiles()) { |
| 243 scoped_ptr<CheckerboardDrawQuad> quad = CheckerboardDrawQuad::Create(); | 246 scoped_ptr<CheckerboardDrawQuad> quad = CheckerboardDrawQuad::Create(); |
| 244 SkColor color = DebugColors::DefaultCheckerboardColor(); | 247 SkColor color = DebugColors::DefaultCheckerboardColor(); |
| 245 quad->SetNew( | 248 quad->SetNew( |
| 246 shared_quad_state, geometry_rect, visible_geometry_rect, color); | 249 shared_quad_state, geometry_rect, visible_geometry_rect, color); |
| 247 quad_sink->Append(quad.PassAs<DrawQuad>()); | 250 quad_sink->Append(quad.PassAs<DrawQuad>()); |
| 248 } else { | 251 } else { |
| 249 SkColor color = SafeOpaqueBackgroundColor(); | 252 SkColor color = SafeOpaqueBackgroundColor(); |
| 250 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); | 253 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); |
| 251 quad->SetNew(shared_quad_state, | 254 quad->SetNew(shared_quad_state, |
| 252 geometry_rect, | 255 geometry_rect, |
| 253 visible_geometry_rect, | 256 visible_geometry_rect, |
| 254 color, | 257 color, |
| 255 false); | 258 false); |
| 256 quad_sink->Append(quad.PassAs<DrawQuad>()); | 259 quad_sink->Append(quad.PassAs<DrawQuad>()); |
| 257 } | 260 } |
| 258 | 261 |
| 259 append_quads_data->num_missing_tiles++; | 262 append_quads_data->num_missing_tiles++; |
| 260 append_quads_data->had_incomplete_tile = true; | 263 append_quads_data->had_incomplete_tile = true; |
| 264 append_quads_data->approximated_visible_content_area += | |
| 265 visible_geometry_rect.width() * visible_geometry_rect.height(); | |
| 261 continue; | 266 continue; |
| 262 } | 267 } |
| 263 | 268 |
| 264 const ManagedTileState::TileVersion& tile_version = | 269 const ManagedTileState::TileVersion& tile_version = |
| 265 iter->GetTileVersionForDrawing(); | 270 iter->GetTileVersionForDrawing(); |
| 266 scoped_ptr<DrawQuad> draw_quad; | 271 scoped_ptr<DrawQuad> draw_quad; |
| 267 switch (tile_version.mode()) { | 272 switch (tile_version.mode()) { |
| 268 case ManagedTileState::TileVersion::RESOURCE_MODE: { | 273 case ManagedTileState::TileVersion::RESOURCE_MODE: { |
| 269 gfx::RectF texture_rect = iter.texture_rect(); | 274 gfx::RectF texture_rect = iter.texture_rect(); |
| 270 gfx::Rect opaque_rect = iter->opaque_rect(); | 275 gfx::Rect opaque_rect = iter->opaque_rect(); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 316 tile_version.get_solid_color(), | 321 tile_version.get_solid_color(), |
| 317 false); | 322 false); |
| 318 draw_quad = quad.PassAs<DrawQuad>(); | 323 draw_quad = quad.PassAs<DrawQuad>(); |
| 319 break; | 324 break; |
| 320 } | 325 } |
| 321 } | 326 } |
| 322 | 327 |
| 323 DCHECK(draw_quad); | 328 DCHECK(draw_quad); |
| 324 quad_sink->Append(draw_quad.Pass()); | 329 quad_sink->Append(draw_quad.Pass()); |
| 325 | 330 |
| 331 if (iter->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) { | |
|
enne (OOO)
2014/04/29 17:38:41
This is not entirely right. You could be using a
ernstm
2014/04/29 18:40:14
I changed this to != HIGH_RESOLUTION. That should
enne (OOO)
2014/04/29 18:46:38
You can sometimes have a non-ideal resolution that
ernstm
2014/04/29 19:00:12
I assume we need to resample/interpolate in that c
| |
| 332 append_quads_data->approximated_visible_content_area += | |
| 333 visible_geometry_rect.width() * visible_geometry_rect.height(); | |
| 334 } | |
| 335 | |
| 326 if (seen_tilings.empty() || seen_tilings.back() != iter.CurrentTiling()) | 336 if (seen_tilings.empty() || seen_tilings.back() != iter.CurrentTiling()) |
| 327 seen_tilings.push_back(iter.CurrentTiling()); | 337 seen_tilings.push_back(iter.CurrentTiling()); |
| 328 } | 338 } |
| 329 | 339 |
| 330 // Aggressively remove any tilings that are not seen to save memory. Note | 340 // Aggressively remove any tilings that are not seen to save memory. Note |
| 331 // that this is at the expense of doing cause more frequent re-painting. A | 341 // that this is at the expense of doing cause more frequent re-painting. A |
| 332 // better scheme would be to maintain a tighter visible_content_rect for the | 342 // better scheme would be to maintain a tighter visible_content_rect for the |
| 333 // finer tilings. | 343 // finer tilings. |
| 334 CleanUpTilingsOnActiveLayer(seen_tilings); | 344 CleanUpTilingsOnActiveLayer(seen_tilings); |
| 335 } | 345 } |
| (...skipping 1181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1517 return iterator_index_ < iterators_.size(); | 1527 return iterator_index_ < iterators_.size(); |
| 1518 } | 1528 } |
| 1519 | 1529 |
| 1520 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( | 1530 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( |
| 1521 PictureLayerTiling::TilingEvictionTileIterator* it) const { | 1531 PictureLayerTiling::TilingEvictionTileIterator* it) const { |
| 1522 return it->get_type() == iteration_stage_ && | 1532 return it->get_type() == iteration_stage_ && |
| 1523 (**it)->required_for_activation() == required_for_activation_; | 1533 (**it)->required_for_activation() == required_for_activation_; |
| 1524 } | 1534 } |
| 1525 | 1535 |
| 1526 } // namespace cc | 1536 } // namespace cc |
| OLD | NEW |