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 90907d7583f0bf6d624b4dfac18a41c7f934d24b..be343cd0035064d88c23cc8a84c9dd9bf3ca0d80 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -1048,11 +1048,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(); |
@@ -1090,6 +1090,10 @@ void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) { |
NOTREACHED(); |
} |
+void LayerTreeHostImpl::DidInitializeVisibleTileForTesting() { |
+ DidInitializeVisibleTile(); |
+} |
+ |
void LayerTreeHostImpl::EnforceManagedMemoryPolicy( |
const ManagedMemoryPolicy& policy) { |
@@ -1140,7 +1144,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(); |
} |
@@ -1487,9 +1491,8 @@ void LayerTreeHostImpl::CreatePendingTree() { |
} |
void LayerTreeHostImpl::UpdateVisibleTiles() { |
- DCHECK(!client_->IsInsideDraw()) << |
- "Updating visible tiles within a draw may trigger " |
- "spurious redraws."; |
+ DCHECK(!client_->IsInsideDraw()) |
+ << "Updating visible tiles within a draw may trigger spurious redraws."; |
if (tile_manager_ && tile_manager_->UpdateVisibleTiles()) |
DidInitializeVisibleTile(); |