Chromium Code Reviews| Index: cc/resources/resource_provider.cc |
| diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc |
| index e7d309db8a964fa061bd76ef29ba3d21fcd78886..d724bfd8567f0394f8fc6aff8a7b9a6a1a280236 100644 |
| --- a/cc/resources/resource_provider.cc |
| +++ b/cc/resources/resource_provider.cc |
| @@ -1033,10 +1033,14 @@ void ResourceProvider::UnlockForRead(ResourceId id) { |
| // The resource belongs to this ResourceProvider, so it can be destroyed. |
| DeleteResourceInternal(it, NORMAL); |
| } else { |
| - ChildMap::iterator child_it = children_.find(resource->child_id); |
| - ResourceIdArray unused; |
| - unused.push_back(id); |
| - DeleteAndReturnUnusedResourcesToChild(child_it, NORMAL, unused); |
| + if (batch_return_resources_) { |
| + batched_returning_resources_[resource->child_id].push_back(id); |
| + } else { |
| + ChildMap::iterator child_it = children_.find(resource->child_id); |
| + ResourceIdArray unused; |
| + unused.push_back(id); |
| + DeleteAndReturnUnusedResourcesToChild(child_it, NORMAL, unused); |
| + } |
| } |
| } |
| } |
| @@ -1663,6 +1667,18 @@ void ResourceProvider::ReceiveReturnsFromParent( |
| } |
| } |
| +void ResourceProvider::SetBatchReturnResources(bool batch) { |
| + batch_return_resources_ = batch; |
| + if (!batch) { |
| + for (const auto& resources : batched_returning_resources_) { |
| + ChildMap::iterator child_it = children_.find(resources.first); |
| + DCHECK(child_it != children_.end()); |
|
Daniele Castagna
2017/03/24 01:44:43
nit: DCHECK_NE?
|
| + DeleteAndReturnUnusedResourcesToChild(child_it, NORMAL, resources.second); |
| + } |
| + batched_returning_resources_.clear(); |
| + } |
| +} |
| + |
| #if defined(OS_ANDROID) |
| void ResourceProvider::SendPromotionHints( |
| const OverlayCandidateList::PromotionHintInfoMap& promotion_hints) { |