Index: cc/resources/resource_pool.cc |
diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc |
index 31b9b272013989ced09e369921056b3d988da66b..45f36e27816d04451e1f92e786dcf21911fd3f34 100644 |
--- a/cc/resources/resource_pool.cc |
+++ b/cc/resources/resource_pool.cc |
@@ -105,12 +105,15 @@ bool ResourcePool::ResourceUsageTooHigh() { |
return false; |
} |
-void ResourcePool::CheckBusyResources() { |
+void ResourcePool::CheckBusyResources(bool wait_if_needed) { |
ResourceList::iterator it = busy_resources_.begin(); |
while (it != busy_resources_.end()) { |
ScopedResource* resource = *it; |
+ if (wait_if_needed) |
+ resource_provider_->WaitReadLockIfNeeded(resource->id()); |
+ |
if (resource_provider_->CanLockForWrite(resource->id())) { |
DidFinishUsingResource(resource); |
it = busy_resources_.erase(it); |