Chromium Code Reviews| Index: cc/resources/gpu_raster_worker_pool.cc |
| diff --git a/cc/resources/gpu_raster_worker_pool.cc b/cc/resources/gpu_raster_worker_pool.cc |
| index d29855ad5c150c92cf64791e607c50fb14cb7043..971c4a09218113a642d9a298d570f060f24724af 100644 |
| --- a/cc/resources/gpu_raster_worker_pool.cc |
| +++ b/cc/resources/gpu_raster_worker_pool.cc |
| @@ -124,6 +124,29 @@ void GpuRasterWorkerPool::Shutdown() { |
| task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_); |
| } |
| +void GpuRasterWorkerPool::RunTasks(RasterTaskQueue* queue) { |
| + ScopedGpuRaster gpu_raster(context_provider_); |
| + |
| + for (auto& item : queue->items) { |
| + RasterTask* task = item.task; |
| + DCHECK(!task->HasCompleted()); |
| + |
| + task->WillSchedule(); |
| + task->ScheduleOnOriginThread(this); |
| + task->DidSchedule(); |
| + |
| + task->WillRun(); |
| + task->RunOnWorkerThread(); |
| + task->DidRun(); |
| + |
| + completed_tasks_.push_back(task); |
| + } |
| + |
| + multi_picture_draw_.draw(); |
| + |
| + CompleteTasks(completed_tasks_); |
| +} |
| + |
| void GpuRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) { |
| TRACE_EVENT0("cc", "GpuRasterWorkerPool::ScheduleTasks"); |
| @@ -191,16 +214,19 @@ void GpuRasterWorkerPool::CheckForCompletedTasks() { |
| task_graph_runner_->CollectCompletedTasks(namespace_token_, |
| &completed_tasks_); |
| - for (Task::Vector::const_iterator it = completed_tasks_.begin(); |
| - it != completed_tasks_.end(); |
| - ++it) { |
| - RasterizerTask* task = static_cast<RasterizerTask*>(it->get()); |
| + CompleteTasks(completed_tasks_); |
| + completed_tasks_.clear(); |
|
vmiura
2014/11/20 01:48:42
Since CompleteTasks() calls completed_tasks_.clear
ernstm
2014/11/20 01:57:01
Done.
|
| +} |
| + |
| +void GpuRasterWorkerPool::CompleteTasks(const Task::Vector& tasks) { |
| + for (auto& task : tasks) { |
| + RasterTask* raster_task = static_cast<RasterTask*>(task.get()); |
| - task->WillComplete(); |
| - task->CompleteOnOriginThread(this); |
| - task->DidComplete(); |
| + raster_task->WillComplete(); |
| + raster_task->CompleteOnOriginThread(this); |
| + raster_task->DidComplete(); |
| - task->RunReplyOnOriginThread(); |
| + raster_task->RunReplyOnOriginThread(); |
| } |
| completed_tasks_.clear(); |
| } |