Index: cc/raster/single_thread_task_graph_runner.cc |
diff --git a/cc/raster/single_thread_task_graph_runner.cc b/cc/raster/single_thread_task_graph_runner.cc |
index 80c85db310196e2c69c748eb398995ad2881b7e6..24994c953df20d703063d369d128bfed03c1ac20 100644 |
--- a/cc/raster/single_thread_task_graph_runner.cc |
+++ b/cc/raster/single_thread_task_graph_runner.cc |
@@ -112,7 +112,7 @@ |
base::AutoLock lock(lock_); |
while (true) { |
- if (!RunTaskWithLockAcquired()) { |
+ if (!work_queue_.HasReadyToRunTasks()) { |
// Exit when shutdown is set and no more tasks are pending. |
if (shutdown_) |
break; |
@@ -121,29 +121,18 @@ |
has_ready_to_run_tasks_cv_.Wait(); |
continue; |
} |
+ |
+ RunTaskWithLockAcquired(); |
} |
} |
-bool SingleThreadTaskGraphRunner::RunTaskWithLockAcquired() { |
+void SingleThreadTaskGraphRunner::RunTaskWithLockAcquired() { |
TRACE_EVENT0("toplevel", |
"SingleThreadTaskGraphRunner::RunTaskWithLockAcquired"); |
lock_.AssertAcquired(); |
- // Find the first category with any tasks to run. This task graph runner |
- // treats categories as an additional priority. |
- const auto& ready_to_run_namespaces = work_queue_.ready_to_run_namespaces(); |
- auto found = std::find_if( |
- ready_to_run_namespaces.cbegin(), ready_to_run_namespaces.cend(), |
- [](const std::pair<uint16_t, TaskGraphWorkQueue::TaskNamespace::Vector>& |
- pair) { return !pair.second.empty(); }); |
- |
- if (found == ready_to_run_namespaces.cend()) { |
- return false; |
- } |
- |
- const uint16_t category = found->first; |
- auto prioritized_task = work_queue_.GetNextTaskToRun(category); |
+ auto prioritized_task = work_queue_.GetNextTaskToRun(); |
Task* task = prioritized_task.task; |
// Call WillRun() before releasing |lock_| and running task. |
@@ -163,8 +152,6 @@ |
if (work_queue_.HasFinishedRunningTasksInNamespace( |
prioritized_task.task_namespace)) |
has_namespaces_with_finished_running_tasks_cv_.Signal(); |
- |
- return true; |
} |
} // namespace cc |