Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3097)

Unified Diff: content/renderer/scheduler/renderer_task_queue_selector.cc

Issue 985813002: Experimental: Remove chromium shared timers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More tests Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698