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

Unified Diff: cc/layers/picture_layer_impl.cc

Issue 257773009: cc: Change required_for_activation bookkeeping. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 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 side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698