Chromium Code Reviews| 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); |
|
reveman
2014/08/16 08:36:18
I think this currently needs to be allowed to fail
auygun
2014/08/18 08:00:50
I'm adding a null-check here.
|
| + |
| 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); |
| }; |