| Index: cc/resources/resource_provider.cc
|
| diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc
|
| index 54411aa1853e3ffbec18d1ce93cb664b444e2d0d..898bc81c102abbcb1b73fd72e1ab06a2b3350a42 100644
|
| --- a/cc/resources/resource_provider.cc
|
| +++ b/cc/resources/resource_provider.cc
|
| @@ -787,8 +787,10 @@ void ResourceProvider::UnlockForRead(ResourceId id) {
|
|
|
| ResourceProvider::Resource* ResourceProvider::LockForWrite(ResourceId id) {
|
| Resource* resource = GetResource(id);
|
| - DCHECK(CanLockForWrite(id));
|
| -
|
| + // TODO(ccameron): The allowance for IsInUseByMacOSWindowServer should not
|
| + // be needed.
|
| + // http://crbug.com/577121
|
| + DCHECK(CanLockForWrite(id) || IsInUseByMacOSWindowServer(id));
|
| resource->locked_for_write = true;
|
| return resource;
|
| }
|
| @@ -807,6 +809,12 @@ bool ResourceProvider::IsOverlayCandidate(ResourceId id) {
|
| return resource->is_overlay_candidate;
|
| }
|
|
|
| +bool ResourceProvider::IsInUseByMacOSWindowServer(ResourceId id) {
|
| + Resource* resource = GetResource(id);
|
| + return resource->gpu_memory_buffer &&
|
| + resource->gpu_memory_buffer->IsInUseByMacOSWindowServer();
|
| +}
|
| +
|
| void ResourceProvider::UnlockForWrite(ResourceProvider::Resource* resource) {
|
| DCHECK(resource->locked_for_write);
|
| DCHECK_EQ(resource->exported_count, 0);
|
|
|