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 fba320f108f49e9456238ed395e15d9d7a62c397..5b8a5c16ea7dd47fce9aa264aef44bc80f1a33b6 100644 |
--- a/cc/resources/one_copy_raster_worker_pool.cc |
+++ b/cc/resources/one_copy_raster_worker_pool.cc |
@@ -15,6 +15,7 @@ |
#include "cc/resources/scoped_resource.h" |
#include "gpu/command_buffer/client/gles2_interface.h" |
#include "third_party/skia/include/utils/SkNullCanvas.h" |
+#include "ui/gfx/gpu_memory_buffer.h" |
namespace cc { |
namespace { |
@@ -47,23 +48,26 @@ class RasterBufferImpl : public RasterBuffer { |
// Overridden from RasterBuffer: |
virtual skia::RefPtr<SkCanvas> AcquireSkCanvas() override { |
- buffer_ = lock_->gpu_memory_buffer(); |
- if (!buffer_) |
+ gfx::GpuMemoryBuffer* gpu_memory_buffer = lock_->gpu_memory_buffer(); |
+ if (!gpu_memory_buffer) |
return skia::AdoptRef(SkCreateNullCanvas()); |
+ buffer_ = gpu_memory_buffer->Map(); |
RasterWorkerPool::AcquireBitmapForBuffer(&bitmap_, |
buffer_, |
resource_->format(), |
resource_->size(), |
- lock_->stride()); |
+ gpu_memory_buffer->GetStride()); |
return skia::AdoptRef(new SkCanvas(bitmap_)); |
} |
virtual void ReleaseSkCanvas(const skia::RefPtr<SkCanvas>& canvas) override { |
- if (!buffer_) |
+ gfx::GpuMemoryBuffer* gpu_memory_buffer = lock_->gpu_memory_buffer(); |
+ if (!gpu_memory_buffer) |
return; |
RasterWorkerPool::ReleaseBitmapForBuffer( |
&bitmap_, buffer_, resource_->format()); |
+ gpu_memory_buffer->Unmap(); |
} |
private: |