Chromium Code Reviews| Index: cc/layers/picture_layer_impl.cc |
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc |
| index aed6dc10cd2f5ea8bac3f09109bcbaa1f5d0d87f..87414c1050798968d1084846bc344f10cb1484ed 100644 |
| --- a/cc/layers/picture_layer_impl.cc |
| +++ b/cc/layers/picture_layer_impl.cc |
| @@ -56,7 +56,9 @@ PictureLayerImpl::PictureLayerImpl(LayerTreeImpl* tree_impl, int id) |
| should_update_tile_priorities_(false), |
| should_use_low_res_tiling_(tree_impl->settings().create_low_res_tiling), |
| use_gpu_rasterization_(false), |
| - layer_needs_to_register_itself_(true) {} |
| + layer_needs_to_register_itself_(true), |
| + uninitialized_tiles_required_for_activation_count_(0) { |
| +} |
| PictureLayerImpl::~PictureLayerImpl() { |
| if (!layer_needs_to_register_itself_) |
| @@ -405,6 +407,7 @@ void PictureLayerImpl::UpdateTilePriorities() { |
| contents_scale_x(), |
| current_frame_time_in_seconds); |
| + uninitialized_tiles_required_for_activation_count_ = 0; |
| if (layer_tree_impl()->IsPendingTree()) |
| MarkVisibleResourcesAsRequired(); |
| @@ -417,6 +420,13 @@ void PictureLayerImpl::NotifyTileInitialized(const Tile* tile) { |
| gfx::RectF layer_damage_rect = |
| gfx::ScaleRect(tile->content_rect(), 1.f / tile->contents_scale()); |
| AddDamageRect(layer_damage_rect); |
| + |
| + DCHECK_EQ(0, uninitialized_tiles_required_for_activation_count_); |
| + } else if (layer_tree_impl()->IsPendingTree()) { |
| + if (tile->required_for_activation()) { |
| + DCHECK_GT(uninitialized_tiles_required_for_activation_count_, 0); |
| + --uninitialized_tiles_required_for_activation_count_; |
|
reveman
2014/05/01 14:17:00
what if 2 different versions of the tile have been
vmpstr
2014/05/01 17:42:13
That's a good point, this count doesn't account fo
|
| + } |
| } |
| } |
| @@ -743,7 +753,7 @@ ResourceProvider::ResourceId PictureLayerImpl::ContentsResourceId() const { |
| return tile_version.get_resource_id(); |
| } |
| -void PictureLayerImpl::MarkVisibleResourcesAsRequired() const { |
| +void PictureLayerImpl::MarkVisibleResourcesAsRequired() { |
| DCHECK(layer_tree_impl()->IsPendingTree()); |
| DCHECK(!layer_tree_impl()->needs_update_draw_properties()); |
| DCHECK(ideal_contents_scale_); |
| @@ -851,7 +861,7 @@ bool PictureLayerImpl::MarkVisibleTilesAsRequired( |
| const PictureLayerTiling* optional_twin_tiling, |
| float contents_scale, |
| const gfx::Rect& rect, |
| - const Region& missing_region) const { |
| + const Region& missing_region) { |
| bool twin_had_missing_tile = false; |
| for (PictureLayerTiling::CoverageIterator iter(tiling, |
| contents_scale, |
| @@ -878,8 +888,10 @@ bool PictureLayerImpl::MarkVisibleTilesAsRequired( |
| continue; |
| } |
| } |
| - |
| + DCHECK(!tile->required_for_activation()); |
| tile->MarkRequiredForActivation(); |
| + if (!tile->IsReadyToDraw()) |
| + ++uninitialized_tiles_required_for_activation_count_; |
| } |
| return twin_had_missing_tile; |
| } |