| Index: content/renderer/scheduler/renderer_task_queue_selector.cc
|
| diff --git a/content/renderer/scheduler/renderer_task_queue_selector.cc b/content/renderer/scheduler/renderer_task_queue_selector.cc
|
| index 7191942cd13ebb8c1c9a037190250236f646d60a..cd8cae0a0917d3f2daf6fda442195e8e3cb01ed4 100644
|
| --- a/content/renderer/scheduler/renderer_task_queue_selector.cc
|
| +++ b/content/renderer/scheduler/renderer_task_queue_selector.cc
|
| @@ -10,7 +10,8 @@
|
|
|
| namespace content {
|
|
|
| -RendererTaskQueueSelector::RendererTaskQueueSelector() : starvation_count_(0) {
|
| +RendererTaskQueueSelector::RendererTaskQueueSelector()
|
| + : starvation_count_(0), task_queue_selector_observer_(nullptr) {
|
| }
|
|
|
| RendererTaskQueueSelector::~RendererTaskQueueSelector() {
|
| @@ -35,8 +36,10 @@ void RendererTaskQueueSelector::SetQueuePriority(size_t queue_index,
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
| DCHECK_LT(queue_index, work_queues_.size());
|
| DCHECK_LT(priority, QUEUE_PRIORITY_COUNT);
|
| - DisableQueue(queue_index);
|
| + bool previously_enabled = DisableQueue(queue_index);
|
| queue_priorities_[priority].insert(queue_index);
|
| + if (task_queue_selector_observer_ && !previously_enabled)
|
| + task_queue_selector_observer_->OnTaskQueueEnabled();
|
| }
|
|
|
| void RendererTaskQueueSelector::EnableQueue(size_t queue_index,
|
| @@ -44,12 +47,15 @@ void RendererTaskQueueSelector::EnableQueue(size_t queue_index,
|
| SetQueuePriority(queue_index, priority);
|
| }
|
|
|
| -void RendererTaskQueueSelector::DisableQueue(size_t queue_index) {
|
| +bool RendererTaskQueueSelector::DisableQueue(size_t queue_index) {
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
| DCHECK_LT(queue_index, work_queues_.size());
|
| + bool previously_enabled = false;
|
| for (auto& queue_priority : queue_priorities_) {
|
| - queue_priority.erase(queue_index);
|
| + if (queue_priority.erase(queue_index))
|
| + previously_enabled = true;
|
| }
|
| + return previously_enabled;
|
| }
|
|
|
| bool RendererTaskQueueSelector::IsQueueEnabled(size_t queue_index) const {
|
| @@ -174,4 +180,9 @@ void RendererTaskQueueSelector::AsValueInto(
|
| state->SetInteger("starvation_count", starvation_count_);
|
| }
|
|
|
| +void RendererTaskQueueSelector::RegisterTaskQueueObserver(
|
| + TaskQueueSelectorObserver* observer) {
|
| + task_queue_selector_observer_ = observer;
|
| +}
|
| +
|
| } // namespace content
|
|
|