Commit 4febae06 authored by Minoru Chikamune's avatar Minoru Chikamune Committed by Commit Bot

[MBI] Add default_task_queue to AgentGroupSchedulerImpl

[related design doc]
https://docs.google.com/document/d/1y-vHkrD1z2RtyWYwT6rJkSLHClYNjDDpUbTtBU7l95A

Bug: 1105403
Change-Id: I28ca5b34a0285d679e98786c84ed9c1b08a230a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2413929
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Reviewed-by: default avatarTal Pressman <talp@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#808185}
parent ee748aa1
......@@ -4,11 +4,18 @@
#include "third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h"
namespace blink {
namespace scheduler {
MainThreadTaskQueue::QueueCreationParams DefaultTaskQueueCreationParams() {
return MainThreadTaskQueue::QueueCreationParams(
MainThreadTaskQueue::QueueType::kDefault)
.SetShouldMonitorQuiescence(true);
}
static AgentGroupSchedulerImpl* g_current_agent_group_scheduler_impl;
// static
......@@ -26,9 +33,14 @@ void AgentGroupSchedulerImpl::SetCurrent(
AgentGroupSchedulerImpl::AgentGroupSchedulerImpl(
MainThreadSchedulerImpl* main_thread_scheduler)
: main_thread_scheduler_(main_thread_scheduler) {}
: default_task_queue_(main_thread_scheduler->NewTaskQueue(
DefaultTaskQueueCreationParams())),
default_task_runner_(default_task_queue_->CreateTaskRunner(
TaskType::kMainThreadTaskQueueDefault)),
main_thread_scheduler_(main_thread_scheduler) {}
AgentGroupSchedulerImpl::~AgentGroupSchedulerImpl() {
default_task_queue_->ShutdownTaskQueue();
if (main_thread_scheduler_) {
main_thread_scheduler_->RemoveAgentGroupScheduler(this);
}
......
......@@ -5,14 +5,18 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_
#include "base/memory/scoped_refptr.h"
#include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h"
#include <memory>
namespace base {
class SingleThreadTaskRunner;
}
namespace blink {
namespace scheduler {
class MainThreadSchedulerImpl;
class MainThreadTaskQueue;
// AgentGroupScheduler implementation which schedules per-AgentSchedulingGroup
// tasks.
......@@ -26,11 +30,16 @@ class PLATFORM_EXPORT AgentGroupSchedulerImpl
AgentGroupSchedulerImpl(const AgentGroupSchedulerImpl&) = delete;
AgentGroupSchedulerImpl& operator=(const AgentGroupSchedulerImpl&) = delete;
~AgentGroupSchedulerImpl() override;
scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() {
return default_task_runner_;
}
MainThreadSchedulerImpl* GetMainThreadScheduler() {
return main_thread_scheduler_;
}
private:
scoped_refptr<MainThreadTaskQueue> default_task_queue_;
scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_;
MainThreadSchedulerImpl* main_thread_scheduler_; // Not owned.
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment