| 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 24994c953df20d703063d369d128bfed03c1ac20..0f3a8b4e73367f16e897384fc63fc00b571b3843 100644
|
| --- a/cc/raster/single_thread_task_graph_runner.cc
|
| +++ b/cc/raster/single_thread_task_graph_runner.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/threading/simple_thread.h"
|
| #include "base/threading/thread_restrictions.h"
|
| #include "base/trace_event/trace_event.h"
|
| +#include "cc/raster/task_category.h"
|
|
|
| namespace cc {
|
|
|
| @@ -132,7 +133,16 @@ void SingleThreadTaskGraphRunner::RunTaskWithLockAcquired() {
|
|
|
| lock_.AssertAcquired();
|
|
|
| - auto prioritized_task = work_queue_.GetNextTaskToRun();
|
| + // Find the first category with any tasks to run. Categories used by this task
|
| + // graph runner are ordered by priority.
|
| + uint16_t category;
|
| + for (category = 0u; category < kNumTaskCategories; ++category) {
|
| + if (work_queue_.HasReadyToRunTasksForCategory(category))
|
| + break;
|
| + }
|
| + DCHECK(category < kNumTaskCategories);
|
| +
|
| + auto prioritized_task = work_queue_.GetNextTaskToRun(category);
|
| Task* task = prioritized_task.task;
|
|
|
| // Call WillRun() before releasing |lock_| and running task.
|
|
|