| Index: cc/layers/picture_layer_impl.cc
|
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
|
| index a61ed129884335c57cf8ad137a3b2394e3f86181..1af16cfe4890e826a48fac13f687d46c5febec1f 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_(0u) {
|
| +}
|
|
|
| PictureLayerImpl::~PictureLayerImpl() {
|
| if (!layer_needs_to_register_itself_)
|
| @@ -395,6 +397,7 @@ void PictureLayerImpl::UpdateTilePriorities() {
|
| contents_scale_x(),
|
| current_frame_time_in_seconds);
|
|
|
| + uninitialized_tiles_required_for_activation_count_ = 0u;
|
| if (layer_tree_impl()->IsPendingTree())
|
| MarkVisibleResourcesAsRequired();
|
|
|
| @@ -407,6 +410,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(0u, 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_, 0u);
|
| + --uninitialized_tiles_required_for_activation_count_;
|
| + }
|
| }
|
| }
|
|
|
| @@ -733,7 +743,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_);
|
| @@ -841,7 +851,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,
|
| @@ -868,8 +878,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;
|
| }
|
|
|