Index: cc/trees/layer_tree_impl.cc |
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
index 703c37b4abee339e6405cf903b39cef8f89776b3..041c5fea5186105c11c86371cea45ed66c3ee206 100644 |
--- a/cc/trees/layer_tree_impl.cc |
+++ b/cc/trees/layer_tree_impl.cc |
@@ -560,6 +560,7 @@ bool LayerTreeImpl::UpdateDrawProperties() { |
typedef LayerIterator<LayerImpl> LayerIteratorType; |
LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list_); |
size_t layers_updated_count = 0; |
+ bool tile_priorities_updated = false; |
for (LayerIteratorType it = |
LayerIteratorType::Begin(&render_surface_layer_list_); |
it != end; |
@@ -574,8 +575,8 @@ bool LayerTreeImpl::UpdateDrawProperties() { |
: Occlusion(); |
if (it.represents_itself()) { |
- layer->UpdateTiles(occlusion_in_content_space, |
- resourceless_software_draw); |
+ tile_priorities_updated |= layer->UpdateTiles( |
+ occlusion_in_content_space, resourceless_software_draw); |
++layers_updated_count; |
} |
@@ -586,13 +587,14 @@ bool LayerTreeImpl::UpdateDrawProperties() { |
} |
if (layer->mask_layer()) { |
- layer->mask_layer()->UpdateTiles(occlusion_in_content_space, |
- resourceless_software_draw); |
+ tile_priorities_updated |= layer->mask_layer()->UpdateTiles( |
+ occlusion_in_content_space, resourceless_software_draw); |
++layers_updated_count; |
} |
if (layer->replica_layer() && layer->replica_layer()->mask_layer()) { |
- layer->replica_layer()->mask_layer()->UpdateTiles( |
- occlusion_in_content_space, resourceless_software_draw); |
+ tile_priorities_updated |= |
+ layer->replica_layer()->mask_layer()->UpdateTiles( |
+ occlusion_in_content_space, resourceless_software_draw); |
++layers_updated_count; |
} |
@@ -600,6 +602,9 @@ bool LayerTreeImpl::UpdateDrawProperties() { |
occlusion_tracker->LeaveLayer(it); |
} |
+ if (tile_priorities_updated) |
+ DidModifyTilePriorities(); |
+ |
TRACE_EVENT_END1("cc", "LayerTreeImpl::UpdateTilePriorities", |
"layers_updated_count", layers_updated_count); |
} |
@@ -1081,10 +1086,7 @@ bool LayerTreeImpl::IsUIResourceOpaque(UIResourceId uid) const { |
} |
void LayerTreeImpl::ProcessUIResourceRequestQueue() { |
- while (ui_resource_request_queue_.size() > 0) { |
- UIResourceRequest req = ui_resource_request_queue_.front(); |
- ui_resource_request_queue_.pop_front(); |
- |
+ for (const auto& req : ui_resource_request_queue_) { |
switch (req.GetType()) { |
case UIResourceRequest::UIResourceCreate: |
layer_tree_host_impl_->CreateUIResource(req.GetId(), req.GetBitmap()); |
@@ -1097,6 +1099,7 @@ void LayerTreeImpl::ProcessUIResourceRequestQueue() { |
break; |
} |
} |
+ ui_resource_request_queue_.clear(); |
// If all UI resource evictions were not recreated by processing this queue, |
// then another commit is required. |