| 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_;
|
|
|
|
|