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 = |