| 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..9bd5f2cac7e86fa4eecf8c9c3afdc0ae3b147aaf 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,18 @@ 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_);
|
| +}
|
| +
|
| +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();
|
| }
|
|
|