Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1526)

Unified Diff: cc/resources/image_raster_worker_pool.cc

Issue 17244003: cc: Move task graph construction to RasterWorkerPool classes. (Closed) Base URL: http://git.chromium.org/chromium/src.git@wp-run-count
Patch Set: add missing CC_EXPORT Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/resources/image_raster_worker_pool.h ('k') | cc/resources/pixel_buffer_raster_worker_pool.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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(
« no previous file with comments | « cc/resources/image_raster_worker_pool.h ('k') | cc/resources/pixel_buffer_raster_worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698