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 816383a6eb136e180b8874cce0576b24b1852120..3456bc5e22e756d7291fd5ef4800baa585f3b865 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -174,7 +174,7 @@ LayerTreeHostImpl::LayerTreeHostImpl( |
did_lock_scrolling_layer_(false), |
should_bubble_scrolls_(false), |
wheel_scrolling_(false), |
- manage_tiles_needed_(false), |
+ tile_priorities_dirty_(false), |
root_layer_scroll_offset_delegate_(NULL), |
settings_(settings), |
visible_(true), |
@@ -255,7 +255,7 @@ void LayerTreeHostImpl::CommitComplete() { |
pending_tree_->set_needs_update_draw_properties(); |
pending_tree_->UpdateDrawProperties(); |
// Start working on newly created tiles immediately if needed. |
- if (!tile_manager_ || !manage_tiles_needed_) |
+ if (!tile_manager_ || !tile_priorities_dirty_) |
NotifyReadyToActivate(); |
else |
ManageTiles(); |
@@ -327,12 +327,12 @@ void LayerTreeHostImpl::Animate(base::TimeTicks monotonic_time, |
void LayerTreeHostImpl::ManageTiles() { |
if (!tile_manager_) |
return; |
- if (!manage_tiles_needed_) |
+ if (!tile_priorities_dirty_) |
return; |
if (!device_viewport_valid_for_tile_management_) |
return; |
- manage_tiles_needed_ = false; |
+ tile_priorities_dirty_ = false; |
tile_manager_->ManageTiles(); |
size_t memory_required_bytes; |
@@ -1108,8 +1108,16 @@ void LayerTreeHostImpl::UpdateTileManagerMemoryPolicy( |
policy.priority_cutoff_when_visible : |
policy.priority_cutoff_when_not_visible); |
new_state.num_resources_limit = policy.num_resources_limit; |
+ |
tile_manager_->SetGlobalState(new_state); |
- manage_tiles_needed_ = true; |
+ DidModifyTilePriorities(); |
+} |
+ |
+void LayerTreeHostImpl::DidModifyTilePriorities() { |
+ DCHECK(settings_.impl_side_painting); |
+ // Mark priorities as dirty and schedule a ManageTiles(). |
+ tile_priorities_dirty_ = true; |
+ client_->SetNeedsManageTilesOnImplThread(); |
} |
void LayerTreeHostImpl::DidInitializeVisibleTile() { |
@@ -2509,8 +2517,9 @@ void LayerTreeHostImpl::SetTreePriority(TreePriority priority) { |
return; |
new_state.tree_priority = priority; |
+ |
tile_manager_->SetGlobalState(new_state); |
- manage_tiles_needed_ = true; |
+ DidModifyTilePriorities(); |
} |
void LayerTreeHostImpl::ResetCurrentFrameTimeForNextFrame() { |