Chromium Code Reviews| Index: cc/trees/layer_tree_impl.cc |
| diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
| index 5a67472a2aa03480e0e5d447d6a8137bf14fa6d5..d4504eb03c8d02cca54ccff52ab057b149c2ba15 100644 |
| --- a/cc/trees/layer_tree_impl.cc |
| +++ b/cc/trees/layer_tree_impl.cc |
| @@ -765,22 +765,24 @@ void LayerTreeImpl::ClearViewportLayers() { |
| } |
| #if DCHECK_IS_ON() |
| -int SanityCheckCopyRequestCounts(LayerImpl* layer) { |
| - int count = layer->HasCopyRequest() ? 1 : 0; |
| - for (size_t i = 0; i < layer->children().size(); ++i) { |
| - count += SanityCheckCopyRequestCounts(layer->child_at(i)); |
| +void SanityCheckCopyRequestCounts(LayerImpl* root_layer) { |
|
ajuma
2016/03/29 19:30:43
This is only using the root_layer in order to get
jaydasika
2016/03/29 19:35:15
Done.
|
| + EffectTree& effect_tree = |
| + root_layer->layer_tree_impl()->property_trees()->effect_tree; |
| + const int effect_tree_size = static_cast<int>(effect_tree.size()); |
| + std::vector<int> copy_requests_count_in_effect_tree(effect_tree_size); |
| + for (auto* layer : *root_layer->layer_tree_impl()) { |
| + if (layer->HasCopyRequest()) { |
| + copy_requests_count_in_effect_tree[layer->effect_tree_index()]++; |
| + } |
| } |
| - if (layer->layer_tree_impl() |
| - ->property_trees() |
| - ->effect_tree.Node(layer->effect_tree_index()) |
| - ->owner_id == layer->id()) { |
| - DCHECK_EQ(count, layer->num_copy_requests_in_target_subtree()) |
| - << ", id: " << layer->id(); |
| - } else { |
| - DCHECK_LE(count, layer->num_copy_requests_in_target_subtree()) |
| - << ", id: " << layer->id(); |
| + for (int i = effect_tree_size - 1; i >= 0; i--) { |
| + EffectNode* node = effect_tree.Node(i); |
| + DCHECK_EQ(node->data.num_copy_requests_in_subtree, |
| + copy_requests_count_in_effect_tree[i]); |
| + if (node->parent_id >= 0) |
| + copy_requests_count_in_effect_tree[node->parent_id] += |
| + copy_requests_count_in_effect_tree[i]; |
| } |
| - return count; |
| } |
| #endif |