Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2310)

Unified Diff: cc/resources/gpu_raster_worker_pool.cc

Issue 635733004: cc: Add ScopedWriteLock classes for raster to GpuMemoryBuffer or using Ganesh. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | cc/resources/one_copy_raster_worker_pool.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/gpu_raster_worker_pool.cc
diff --git a/cc/resources/gpu_raster_worker_pool.cc b/cc/resources/gpu_raster_worker_pool.cc
index 0463cff89a31aa5471a137fe8f8a5d11c272e0ef..229a3f768dcdaf999111c8ae1011eb00029a8206 100644
--- a/cc/resources/gpu_raster_worker_pool.cc
+++ b/cc/resources/gpu_raster_worker_pool.cc
@@ -27,17 +27,13 @@ class RasterBufferImpl : public RasterBuffer {
RasterBufferImpl(ResourceProvider* resource_provider,
const Resource* resource,
SkMultiPictureDraw* multi_picture_draw)
- : resource_provider_(resource_provider),
+ : lock_(resource_provider, resource->id()),
resource_(resource),
- surface_(resource_provider->LockForWriteToSkSurface(resource->id())),
multi_picture_draw_(multi_picture_draw) {}
- virtual ~RasterBufferImpl() {
- resource_provider_->UnlockForWriteToSkSurface(resource_->id());
- }
// Overridden from RasterBuffer:
virtual skia::RefPtr<SkCanvas> AcquireSkCanvas() override {
- if (!surface_)
+ if (!lock_.sk_surface())
return skia::AdoptRef(SkCreateNullCanvas());
skia::RefPtr<SkCanvas> canvas = skia::SharePtr(recorder_.beginRecording(
@@ -49,7 +45,7 @@ class RasterBufferImpl : public RasterBuffer {
return canvas;
}
virtual void ReleaseSkCanvas(const skia::RefPtr<SkCanvas>& canvas) override {
- if (!surface_)
+ if (!lock_.sk_surface())
return;
// Balanced with save() call in AcquireSkCanvas.
@@ -57,13 +53,12 @@ class RasterBufferImpl : public RasterBuffer {
// Add the canvas and recorded picture to |multi_picture_draw_|.
skia::RefPtr<SkPicture> picture = skia::AdoptRef(recorder_.endRecording());
- multi_picture_draw_->add(surface_->getCanvas(), picture.get());
+ multi_picture_draw_->add(lock_.sk_surface()->getCanvas(), picture.get());
}
private:
- ResourceProvider* resource_provider_;
+ ResourceProvider::ScopedWriteLockGr lock_;
const Resource* resource_;
- SkSurface* surface_;
SkMultiPictureDraw* multi_picture_draw_;
SkPictureRecorder recorder_;
@@ -198,10 +193,6 @@ void GpuRasterWorkerPool::CheckForCompletedTasks() {
scoped_ptr<RasterBuffer> GpuRasterWorkerPool::AcquireBufferForRaster(
const Resource* resource) {
- // RasterBuffer implementation depends on a SkSurface having been acquired for
- // the resource.
- resource_provider_->AcquireSkSurface(resource->id());
-
return make_scoped_ptr<RasterBuffer>(
new RasterBufferImpl(resource_provider_, resource, &multi_picture_draw_));
}
« no previous file with comments | « no previous file | cc/resources/one_copy_raster_worker_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698