Index: cc/layers/picture_layer_impl.cc |
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc |
index 4cdabdab7f998a20815db78f9e59bb48dd36cd1e..d45b562397fbe3a4112d5eb30170f1e13f242cc6 100644 |
--- a/cc/layers/picture_layer_impl.cc |
+++ b/cc/layers/picture_layer_impl.cc |
@@ -64,13 +64,12 @@ PictureLayerImpl::PictureLayerImpl(LayerTreeImpl* tree_impl, int id) |
was_animating_transform_to_screen_(false), |
is_using_lcd_text_(tree_impl->settings().can_use_lcd_text), |
needs_post_commit_initialization_(true), |
- should_update_tile_priorities_(false), |
- layer_needs_to_register_itself_(true) { |
+ should_update_tile_priorities_(false) { |
+ layer_tree_impl()->RegisterPictureLayerImpl(this); |
} |
PictureLayerImpl::~PictureLayerImpl() { |
- if (!layer_needs_to_register_itself_) |
- layer_tree_impl()->tile_manager()->UnregisterPictureLayerImpl(this); |
+ layer_tree_impl()->UnregisterPictureLayerImpl(this); |
} |
const char* PictureLayerImpl::LayerTypeAsString() const { |
@@ -373,23 +372,12 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, |
CleanUpTilingsOnActiveLayer(seen_tilings); |
} |
-void PictureLayerImpl::DidUnregisterLayer() { |
- TRACE_EVENT0("cc", "PictureLayerImpl::DidUnregisterLayer"); |
- |
- layer_needs_to_register_itself_ = true; |
-} |
- |
void PictureLayerImpl::UpdateTilePriorities() { |
TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTilePriorities"); |
DCHECK(!needs_post_commit_initialization_); |
CHECK(should_update_tile_priorities_); |
- if (layer_needs_to_register_itself_) { |
- layer_tree_impl()->tile_manager()->RegisterPictureLayerImpl(this); |
- layer_needs_to_register_itself_ = false; |
- } |
- |
if (layer_tree_impl()->device_viewport_valid_for_tile_management()) { |
visible_rect_for_tile_priority_ = visible_content_rect(); |
viewport_size_for_tile_priority_ = layer_tree_impl()->DrawViewportSize(); |
@@ -1405,10 +1393,17 @@ bool PictureLayerImpl::IsOnActiveOrPendingTree() const { |
return !layer_tree_impl()->IsRecycleTree(); |
} |
+bool PictureLayerImpl::HasValidTilePriorities() const { |
+ return IsOnActiveOrPendingTree() && IsDrawnRenderSurfaceLayerListMember(); |
+} |
+ |
bool PictureLayerImpl::AllTilesRequiredForActivationAreReadyToDraw() const { |
if (!layer_tree_impl()->IsPendingTree()) |
return true; |
+ if (!HasValidTilePriorities()) |
+ return true; |
+ |
if (!tilings_) |
return true; |