| Index: cc/resources/image_raster_worker_pool.cc
|
| diff --git a/cc/resources/image_raster_worker_pool.cc b/cc/resources/image_raster_worker_pool.cc
|
| index c34ed2e62401ce92e76dcce66b3027d4e7078c1b..c2fe39506fa34cfaebe81a4448a8e67a54136fdd 100644
|
| --- a/cc/resources/image_raster_worker_pool.cc
|
| +++ b/cc/resources/image_raster_worker_pool.cc
|
| @@ -17,12 +17,10 @@ class ImageWorkerPoolTaskImpl : public internal::WorkerPoolTask {
|
| typedef base::Callback<void(bool was_canceled)> Reply;
|
|
|
| ImageWorkerPoolTaskImpl(internal::RasterWorkerPoolTask* task,
|
| - TaskVector* dependencies,
|
| uint8_t* buffer,
|
| int stride,
|
| const Reply& reply)
|
| - : internal::WorkerPoolTask(dependencies),
|
| - task_(task),
|
| + : task_(task),
|
| buffer_(buffer),
|
| stride_(stride),
|
| reply_(reply) {
|
| @@ -68,27 +66,20 @@ ImageRasterWorkerPool::~ImageRasterWorkerPool() {
|
| DCHECK_EQ(0u, image_tasks_.size());
|
| }
|
|
|
| -void ImageRasterWorkerPool::Shutdown() {
|
| - RasterWorkerPool::Shutdown();
|
| - ScheduleRasterTasks(RootTask());
|
| -}
|
| -
|
| void ImageRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
|
| TRACE_EVENT0("cc", "ImageRasterWorkerPool::ScheduleTasks");
|
|
|
| - internal::WorkerPoolTask::TaskVector tasks;
|
| -
|
| RasterWorkerPool::SetRasterTasks(queue);
|
|
|
| - for (RasterTask::Queue::TaskVector::const_iterator it =
|
| - raster_tasks().begin();
|
| + RasterTaskGraph graph;
|
| + for (RasterTaskVector::const_iterator it = raster_tasks().begin();
|
| it != raster_tasks().end(); ++it) {
|
| internal::RasterWorkerPoolTask* task = it->get();
|
|
|
| TaskMap::iterator image_it = image_tasks_.find(task);
|
| if (image_it != image_tasks_.end()) {
|
| internal::WorkerPoolTask* image_task = image_it->second.get();
|
| - tasks.push_back(image_task);
|
| + graph.InsertRasterTask(image_task, task->dependencies());
|
| continue;
|
| }
|
|
|
| @@ -99,29 +90,19 @@ void ImageRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
|
| uint8* buffer = resource_provider()->MapImage(task->resource()->id());
|
| int stride = resource_provider()->GetImageStride(task->resource()->id());
|
|
|
| - // TODO(reveman): Avoid having to make a copy of dependencies.
|
| - internal::WorkerPoolTask::TaskVector dependencies = task->dependencies();
|
| scoped_refptr<internal::WorkerPoolTask> new_image_task(
|
| new ImageWorkerPoolTaskImpl(
|
| task,
|
| - &dependencies,
|
| buffer,
|
| stride,
|
| base::Bind(&ImageRasterWorkerPool::OnRasterTaskCompleted,
|
| base::Unretained(this),
|
| make_scoped_refptr(task))));
|
| -
|
| image_tasks_[task] = new_image_task;
|
| - tasks.push_back(new_image_task);
|
| - }
|
| -
|
| - if (tasks.empty()) {
|
| - ScheduleRasterTasks(RootTask());
|
| - return;
|
| + graph.InsertRasterTask(new_image_task.get(), task->dependencies());
|
| }
|
|
|
| - RootTask root(&tasks);
|
| - ScheduleRasterTasks(root);
|
| + SetRasterTaskGraph(&graph);
|
| }
|
|
|
| void ImageRasterWorkerPool::OnRasterTaskCompleted(
|
|
|