Index: cc/resources/zero_copy_raster_worker_pool.cc |
diff --git a/cc/resources/zero_copy_raster_worker_pool.cc b/cc/resources/zero_copy_raster_worker_pool.cc |
index 0d9c21afb1253c6eb8e0efaafff006540facaf58..1e920903bc26804422ab94c9554ef4765bd4b6a4 100644 |
--- a/cc/resources/zero_copy_raster_worker_pool.cc |
+++ b/cc/resources/zero_copy_raster_worker_pool.cc |
@@ -13,6 +13,7 @@ |
#include "cc/resources/raster_buffer.h" |
#include "cc/resources/resource.h" |
#include "third_party/skia/include/utils/SkNullCanvas.h" |
+#include "ui/gfx/gpu_memory_buffer.h" |
namespace cc { |
namespace { |
@@ -27,23 +28,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: |