Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 2f657e1ed88c985968c4e8752d84e02f0e65fb60..443a225769e9031f1dd7a20b7a285511f2e956ea 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -1054,11 +1054,11 @@ bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame, |
"SourceFrameNumber", |
active_tree_->source_frame_number()); |
- if (need_to_update_visible_tiles_before_draw_) { |
- DCHECK(tile_manager_); |
- if (tile_manager_->UpdateVisibleTiles()) |
- DidInitializeVisibleTile(); |
+ if (need_to_update_visible_tiles_before_draw_ && |
+ tile_manager_ && tile_manager_->UpdateVisibleTiles()) { |
+ DidInitializeVisibleTile(); |
} |
+ need_to_update_visible_tiles_before_draw_ = true; |
active_tree_->UpdateDrawProperties(); |
@@ -1096,6 +1096,10 @@ void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) { |
NOTREACHED(); |
} |
+void LayerTreeHostImpl::DidInitializeVisibleTileForTesting() { |
+ DidInitializeVisibleTile(); |
+} |
+ |
void LayerTreeHostImpl::EnforceManagedMemoryPolicy( |
const ManagedMemoryPolicy& policy) { |
@@ -1154,7 +1158,7 @@ void LayerTreeHostImpl::DidInitializeVisibleTile() { |
// TODO(reveman): Determine tiles that changed and only damage |
// what's necessary. |
SetFullRootLayerDamage(); |
- if (client_) |
+ if (client_ && !client_->IsInsideDraw()) |
client_->DidInitializeVisibleTileOnImplThread(); |
} |
@@ -1502,12 +1506,8 @@ void LayerTreeHostImpl::CreatePendingTree() { |
} |
void LayerTreeHostImpl::UpdateVisibleTiles() { |
- DCHECK(!client_->IsInsideDraw()) << |
- "Updating visible tiles within a draw may trigger " |
- "spurious redraws."; |
if (tile_manager_ && tile_manager_->UpdateVisibleTiles()) |
DidInitializeVisibleTile(); |
- |
need_to_update_visible_tiles_before_draw_ = false; |
} |