| Index: cc/resources/tile_manager.cc
|
| diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
|
| index 452d9b45ccfa5e65bdc444bdb3c3f36cc616f429..04724e91c5a41f199fa9e609a83f9a75899318cb 100644
|
| --- a/cc/resources/tile_manager.cc
|
| +++ b/cc/resources/tile_manager.cc
|
| @@ -59,14 +59,14 @@ class RasterTaskImpl : public RasterTask {
|
| analyze_picture_(analyze_picture),
|
| rendering_stats_(rendering_stats),
|
| reply_(reply),
|
| - canvas_(NULL) {}
|
| + raster_buffer_(NULL) {}
|
|
|
| // Overridden from Task:
|
| virtual void RunOnWorkerThread() OVERRIDE {
|
| TRACE_EVENT0("cc", "RasterizerTaskImpl::RunOnWorkerThread");
|
|
|
| DCHECK(picture_pile_);
|
| - if (canvas_) {
|
| + if (raster_buffer_) {
|
| AnalyzeAndRaster(picture_pile_->GetCloneForDrawingOnThread(
|
| RasterWorkerPool::GetPictureCloneIndexForCurrentThread()));
|
| }
|
| @@ -74,25 +74,25 @@ class RasterTaskImpl : public RasterTask {
|
|
|
| // Overridden from RasterizerTask:
|
| virtual void ScheduleOnOriginThread(RasterizerTaskClient* client) OVERRIDE {
|
| - DCHECK(!canvas_);
|
| - canvas_ = client->AcquireCanvasForRaster(this);
|
| + DCHECK(!raster_buffer_);
|
| + raster_buffer_ = client->AcquireBufferForRaster(this);
|
| }
|
| virtual void CompleteOnOriginThread(RasterizerTaskClient* client) OVERRIDE {
|
| - canvas_ = NULL;
|
| - client->ReleaseCanvasForRaster(this);
|
| + raster_buffer_ = NULL;
|
| + client->ReleaseBufferForRaster(this);
|
| }
|
| virtual void RunReplyOnOriginThread() OVERRIDE {
|
| - DCHECK(!canvas_);
|
| + DCHECK(!raster_buffer_);
|
| reply_.Run(analysis_, !HasFinishedRunning());
|
| }
|
|
|
| protected:
|
| - virtual ~RasterTaskImpl() { DCHECK(!canvas_); }
|
| + virtual ~RasterTaskImpl() { DCHECK(!raster_buffer_); }
|
|
|
| private:
|
| void AnalyzeAndRaster(PicturePileImpl* picture_pile) {
|
| DCHECK(picture_pile);
|
| - DCHECK(canvas_);
|
| + DCHECK(raster_buffer_);
|
|
|
| if (analyze_picture_) {
|
| Analyze(picture_pile);
|
| @@ -130,6 +130,9 @@ class RasterTaskImpl : public RasterTask {
|
| devtools_instrumentation::ScopedLayerTask layer_task(
|
| devtools_instrumentation::kRasterTask, layer_id_);
|
|
|
| + skia::RefPtr<SkCanvas> canvas = raster_buffer_->AcquireSkCanvas();
|
| + DCHECK(canvas);
|
| +
|
| skia::RefPtr<SkDrawFilter> draw_filter;
|
| switch (raster_mode_) {
|
| case LOW_QUALITY_RASTER_MODE:
|
| @@ -141,7 +144,7 @@ class RasterTaskImpl : public RasterTask {
|
| default:
|
| NOTREACHED();
|
| }
|
| - canvas_->setDrawFilter(draw_filter.get());
|
| + canvas->setDrawFilter(draw_filter.get());
|
|
|
| base::TimeDelta prev_rasterize_time =
|
| rendering_stats_->impl_thread_rendering_stats().rasterize_time;
|
| @@ -154,7 +157,7 @@ class RasterTaskImpl : public RasterTask {
|
| tile_resolution_ == HIGH_RESOLUTION ? rendering_stats_ : NULL;
|
| DCHECK(picture_pile);
|
| picture_pile->RasterToBitmap(
|
| - canvas_, content_rect_, contents_scale_, stats);
|
| + canvas.get(), content_rect_, contents_scale_, stats);
|
|
|
| if (rendering_stats_->record_rendering_stats()) {
|
| base::TimeDelta current_rasterize_time =
|
| @@ -166,6 +169,8 @@ class RasterTaskImpl : public RasterTask {
|
| 100000,
|
| 100);
|
| }
|
| +
|
| + raster_buffer_->ReleaseSkCanvas(canvas);
|
| }
|
|
|
| PicturePileImpl::Analysis analysis_;
|
| @@ -180,7 +185,7 @@ class RasterTaskImpl : public RasterTask {
|
| bool analyze_picture_;
|
| RenderingStatsInstrumentation* rendering_stats_;
|
| const base::Callback<void(const PicturePileImpl::Analysis&, bool)> reply_;
|
| - SkCanvas* canvas_;
|
| + RasterBuffer* raster_buffer_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(RasterTaskImpl);
|
| };
|
|
|