Chromium Code Reviews| Index: cc/raster_worker_pool.cc |
| diff --git a/cc/raster_worker_pool.cc b/cc/raster_worker_pool.cc |
| index bc6e50e7084ad8c9e94ca42afe7b098b107a7f92..c260379fedba7c5ad7ee6638c90fd6fe2cacb4ea 100644 |
| --- a/cc/raster_worker_pool.cc |
| +++ b/cc/raster_worker_pool.cc |
| @@ -25,6 +25,10 @@ class RasterWorkerPoolTaskImpl : public internal::WorkerPoolTask { |
| task_.Run(picture_pile_.get(), rendering_stats); |
| } |
| + virtual void DeferToThread(base::Thread* thread) OVERRIDE { |
| + picture_pile_ = picture_pile_->GetCloneForDrawingOnThread(thread); |
|
reveman
2013/02/13 22:17:36
If we need this, I prefer if we didn't also do clo
|
| + } |
| + |
| private: |
| scoped_refptr<PicturePileImpl> picture_pile_; |
| RasterWorkerPool::RasterCallback task_; |
| @@ -40,8 +44,18 @@ RasterWorkerPool::~RasterWorkerPool() { |
| } |
| void RasterWorkerPool::PostRasterTaskAndReply(PicturePileImpl* picture_pile, |
| + bool is_cheap, |
| const RasterCallback& task, |
| const base::Closure& reply) { |
| + if (is_cheap && CanPostCheapTask()) { |
| + PostCheapTask( |
| + make_scoped_ptr(new RasterWorkerPoolTaskImpl( |
| + picture_pile, |
| + task, |
| + reply)).PassAs<internal::WorkerPoolTask>()); |
| + return; |
| + } |
| + |
| Worker* worker = GetWorkerForNextTask(); |
| scoped_refptr<PicturePileImpl> picture_pile_clone = |