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(); |
} |