Index: cc/resources/one_copy_raster_worker_pool.cc |
diff --git a/cc/resources/one_copy_raster_worker_pool.cc b/cc/resources/one_copy_raster_worker_pool.cc |
index 5b8a5c16ea7dd47fce9aa264aef44bc80f1a33b6..ef0f19da00a40c59b620d875acdf1cc2e809fc74 100644 |
--- a/cc/resources/one_copy_raster_worker_pool.cc |
+++ b/cc/resources/one_copy_raster_worker_pool.cc |
@@ -32,14 +32,16 @@ class RasterBufferImpl : public RasterBuffer { |
lock_(new ResourceProvider::ScopedWriteLockGpuMemoryBuffer( |
resource_provider_, |
raster_resource_->id())), |
- buffer_(NULL) {} |
+ gpu_memory_buffer_(nullptr), |
+ buffer_(nullptr) {} |
virtual ~RasterBufferImpl() { |
// First unlock raster resource. |
lock_.reset(); |
// Copy contents of raster resource to |resource_|. |
- resource_provider_->CopyResource(raster_resource_->id(), resource_->id()); |
+ if (gpu_memory_buffer_) |
+ resource_provider_->CopyResource(raster_resource_->id(), resource_->id()); |
// Return raster resource to pool so it can be used by another RasterBuffer |
// instance. |
@@ -48,26 +50,25 @@ class RasterBufferImpl : public RasterBuffer { |
// Overridden from RasterBuffer: |
virtual skia::RefPtr<SkCanvas> AcquireSkCanvas() override { |
- gfx::GpuMemoryBuffer* gpu_memory_buffer = lock_->gpu_memory_buffer(); |
- if (!gpu_memory_buffer) |
+ gpu_memory_buffer_ = lock_->GetGpuMemoryBuffer(); |
+ if (!gpu_memory_buffer_) |
return skia::AdoptRef(SkCreateNullCanvas()); |
- buffer_ = gpu_memory_buffer->Map(); |
+ buffer_ = gpu_memory_buffer_->Map(); |
RasterWorkerPool::AcquireBitmapForBuffer(&bitmap_, |
buffer_, |
resource_->format(), |
resource_->size(), |
- gpu_memory_buffer->GetStride()); |
+ gpu_memory_buffer_->GetStride()); |
return skia::AdoptRef(new SkCanvas(bitmap_)); |
} |
virtual void ReleaseSkCanvas(const skia::RefPtr<SkCanvas>& canvas) override { |
- gfx::GpuMemoryBuffer* gpu_memory_buffer = lock_->gpu_memory_buffer(); |
- if (!gpu_memory_buffer) |
+ if (!gpu_memory_buffer_) |
return; |
RasterWorkerPool::ReleaseBitmapForBuffer( |
&bitmap_, buffer_, resource_->format()); |
- gpu_memory_buffer->Unmap(); |
+ gpu_memory_buffer_->Unmap(); |
} |
private: |
@@ -76,6 +77,7 @@ class RasterBufferImpl : public RasterBuffer { |
const Resource* resource_; |
scoped_ptr<ScopedResource> raster_resource_; |
scoped_ptr<ResourceProvider::ScopedWriteLockGpuMemoryBuffer> lock_; |
+ gfx::GpuMemoryBuffer* gpu_memory_buffer_; |
void* buffer_; |
SkBitmap bitmap_; |