Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(611)

Side by Side Diff: cc/resources/resource_pool.cc

Issue 1688953002: Mac: Suppress asserts about resources being in use (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missed function Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | cc/resources/resource_provider.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/resource_pool.h" 5 #include "cc/resources/resource_pool.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 } 95 }
96 96
97 Resource* ResourcePool::AcquireResource(const gfx::Size& size, 97 Resource* ResourcePool::AcquireResource(const gfx::Size& size,
98 ResourceFormat format) { 98 ResourceFormat format) {
99 // Finding resources in |unused_resources_| from MRU to LRU direction, touches 99 // Finding resources in |unused_resources_| from MRU to LRU direction, touches
100 // LRU resources only if needed, which increases possibility of expiring more 100 // LRU resources only if needed, which increases possibility of expiring more
101 // LRU resources within kResourceExpirationDelayMs. 101 // LRU resources within kResourceExpirationDelayMs.
102 for (ResourceDeque::iterator it = unused_resources_.begin(); 102 for (ResourceDeque::iterator it = unused_resources_.begin();
103 it != unused_resources_.end(); ++it) { 103 it != unused_resources_.end(); ++it) {
104 ScopedResource* resource = it->get(); 104 ScopedResource* resource = it->get();
105 // TODO(ccameron): Investigate why this fails (http://crbug.com/577121). 105 // TODO(ccameron): The allowance for IsInUseByMacOSWindowServer should not
106 // DCHECK(resource_provider_->CanLockForWrite(resource->id())); 106 // be needed.
107 // http://crbug.com/577121
108 DCHECK(resource_provider_->CanLockForWrite(resource->id()) ||
109 resource_provider_->IsInUseByMacOSWindowServer(resource->id()));
107 110
108 if (resource->format() != format) 111 if (resource->format() != format)
109 continue; 112 continue;
110 if (resource->size() != size) 113 if (resource->size() != size)
111 continue; 114 continue;
112 115
113 // Transfer resource to |in_use_resources_|. 116 // Transfer resource to |in_use_resources_|.
114 in_use_resources_[resource->id()] = std::move(*it); 117 in_use_resources_[resource->id()] = std::move(*it);
115 unused_resources_.erase(it); 118 unused_resources_.erase(it);
116 in_use_memory_usage_bytes_ += ResourceUtil::UncheckedSizeInBytes<size_t>( 119 in_use_memory_usage_bytes_ += ResourceUtil::UncheckedSizeInBytes<size_t>(
(...skipping 29 matching lines...) Expand all
146 149
147 auto it = 150 auto it =
148 std::find_if(unused_resources_.begin(), unused_resources_.end(), 151 std::find_if(unused_resources_.begin(), unused_resources_.end(),
149 [content_id](const scoped_ptr<PoolResource>& pool_resource) { 152 [content_id](const scoped_ptr<PoolResource>& pool_resource) {
150 return pool_resource->content_id() == content_id; 153 return pool_resource->content_id() == content_id;
151 }); 154 });
152 if (it == unused_resources_.end()) 155 if (it == unused_resources_.end())
153 return nullptr; 156 return nullptr;
154 157
155 Resource* resource = it->get(); 158 Resource* resource = it->get();
156 DCHECK(resource_provider_->CanLockForWrite(resource->id())); 159 // TODO(ccameron): The allowance for IsInUseByMacOSWindowServer should not
160 // be needed.
161 // http://crbug.com/577121
162 DCHECK(resource_provider_->CanLockForWrite(resource->id()) ||
163 resource_provider_->IsInUseByMacOSWindowServer(resource->id()));
157 164
158 // Transfer resource to |in_use_resources_|. 165 // Transfer resource to |in_use_resources_|.
159 in_use_resources_[resource->id()] = std::move(*it); 166 in_use_resources_[resource->id()] = std::move(*it);
160 unused_resources_.erase(it); 167 unused_resources_.erase(it);
161 in_use_memory_usage_bytes_ += ResourceUtil::UncheckedSizeInBytes<size_t>( 168 in_use_memory_usage_bytes_ += ResourceUtil::UncheckedSizeInBytes<size_t>(
162 resource->size(), resource->format()); 169 resource->size(), resource->format());
163 return resource; 170 return resource;
164 } 171 }
165 172
166 void ResourcePool::ReleaseResource(Resource* resource, uint64_t content_id) { 173 void ResourcePool::ReleaseResource(Resource* resource, uint64_t content_id) {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 for (const auto& resource : busy_resources_) { 322 for (const auto& resource : busy_resources_) {
316 resource->OnMemoryDump(pmd, resource_provider_, false /* is_free */); 323 resource->OnMemoryDump(pmd, resource_provider_, false /* is_free */);
317 } 324 }
318 for (const auto& entry : in_use_resources_) { 325 for (const auto& entry : in_use_resources_) {
319 entry.second->OnMemoryDump(pmd, resource_provider_, false /* is_free */); 326 entry.second->OnMemoryDump(pmd, resource_provider_, false /* is_free */);
320 } 327 }
321 return true; 328 return true;
322 } 329 }
323 330
324 } // namespace cc 331 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/resources/resource_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698