| Index: third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc b/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
|
| index dbfc73ef79be4c1ca44deb429f80fb8e79036f1d..35c20d8fae12d01d0d2445fcd25b548d1aa2ecde 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
|
| @@ -9,135 +9,29 @@
|
| #include "base/callback.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/threading/thread.h"
|
| +#include "platform/scheduler/child/scheduler_helper.h"
|
| +#include "platform/scheduler/child/scheduler_tqm_delegate.h"
|
| +#include "platform/wtf/PtrUtil.h"
|
|
|
| namespace blink {
|
| namespace scheduler {
|
|
|
| -// TODO(scheduler-dev): Get rid of this asap!
|
| -namespace {
|
| -class CompositorWorkerTaskRunnerWrapper : public TaskQueue {
|
| - public:
|
| - explicit CompositorWorkerTaskRunnerWrapper(
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
| - : task_runner_(task_runner) {}
|
| -
|
| - // TaskQueue implementation:
|
| - void UnregisterTaskQueue() override { NOTREACHED(); }
|
| -
|
| - bool RunsTasksOnCurrentThread() const override {
|
| - return task_runner_->RunsTasksOnCurrentThread();
|
| - }
|
| -
|
| - bool PostDelayedTask(const tracked_objects::Location& from_here,
|
| - base::OnceClosure task,
|
| - base::TimeDelta delay) override {
|
| - return task_runner_->PostDelayedTask(from_here, std::move(task), delay);
|
| - }
|
| -
|
| - bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
|
| - base::OnceClosure task,
|
| - base::TimeDelta delay) override {
|
| - return task_runner_->PostNonNestableDelayedTask(from_here, std::move(task),
|
| - delay);
|
| - }
|
| -
|
| - std::unique_ptr<QueueEnabledVoter> CreateQueueEnabledVoter() override {
|
| - NOTREACHED();
|
| - return nullptr;
|
| - }
|
| -
|
| - void InsertFence(InsertFencePosition position) override { NOTREACHED(); }
|
| -
|
| - void RemoveFence() override { NOTREACHED(); }
|
| -
|
| - bool BlockedByFence() const override {
|
| - NOTREACHED();
|
| - return false;
|
| - }
|
| -
|
| - bool IsQueueEnabled() const override {
|
| - NOTREACHED();
|
| - return true;
|
| - }
|
| -
|
| - bool IsEmpty() const override {
|
| - NOTREACHED();
|
| - return false;
|
| - };
|
| -
|
| - size_t GetNumberOfPendingTasks() const override {
|
| - NOTREACHED();
|
| - return 0;
|
| - };
|
| -
|
| - bool HasPendingImmediateWork() const override {
|
| - NOTREACHED();
|
| - return false;
|
| - };
|
| -
|
| - base::Optional<base::TimeTicks> GetNextScheduledWakeUp() override {
|
| - NOTREACHED();
|
| - return base::nullopt;
|
| - }
|
| -
|
| - const char* GetName() const override {
|
| - NOTREACHED();
|
| - return nullptr;
|
| - };
|
| -
|
| - QueueType GetQueueType() const override {
|
| - NOTREACHED();
|
| - return QueueType::DEFAULT;
|
| - }
|
| -
|
| - void SetQueuePriority(QueuePriority priority) override { NOTREACHED(); }
|
| -
|
| - QueuePriority GetQueuePriority() const override {
|
| - NOTREACHED();
|
| - return QueuePriority::NORMAL_PRIORITY;
|
| - };
|
| -
|
| - void AddTaskObserver(
|
| - base::MessageLoop::TaskObserver* task_observer) override {
|
| - NOTREACHED();
|
| - }
|
| -
|
| - void RemoveTaskObserver(
|
| - base::MessageLoop::TaskObserver* task_observer) override {
|
| - NOTREACHED();
|
| - }
|
| -
|
| - void SetTimeDomain(TimeDomain* domain) override { NOTREACHED(); }
|
| -
|
| - TimeDomain* GetTimeDomain() const override {
|
| - return nullptr;
|
| - }
|
| -
|
| - void SetBlameContext(base::trace_event::BlameContext*) override {
|
| - NOTREACHED();
|
| - }
|
| -
|
| - void SetObserver(Observer* observer) override { NOTREACHED(); }
|
| -
|
| - private:
|
| - ~CompositorWorkerTaskRunnerWrapper() override {}
|
| -
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| -};
|
| -} // namespace
|
| -
|
| -CompositorWorkerScheduler::CompositorWorkerScheduler(base::Thread* thread)
|
| - : thread_(thread) {}
|
| +CompositorWorkerScheduler::CompositorWorkerScheduler(
|
| + base::Thread* thread,
|
| + scoped_refptr<SchedulerTqmDelegate> main_task_runner)
|
| + : WorkerScheduler(WTF::MakeUnique<SchedulerHelper>(
|
| + main_task_runner,
|
| + "compositor.scheduler",
|
| + TRACE_DISABLED_BY_DEFAULT("compositor.scheduler"),
|
| + TRACE_DISABLED_BY_DEFAULT("compositor.scheduler.debug"))),
|
| + thread_(thread) {}
|
|
|
| CompositorWorkerScheduler::~CompositorWorkerScheduler() {}
|
|
|
| void CompositorWorkerScheduler::Init() {}
|
|
|
| scoped_refptr<TaskQueue> CompositorWorkerScheduler::DefaultTaskRunner() {
|
| - // TODO(sad): Implement a more robust scheduler that can do idle tasks for GC
|
| - // without regressing performance of the rest of the system.
|
| - return make_scoped_refptr(
|
| - new CompositorWorkerTaskRunnerWrapper(thread_->task_runner()));
|
| + return helper_->DefaultTaskRunner();
|
| }
|
|
|
| scoped_refptr<scheduler::SingleThreadIdleTaskRunner>
|
| @@ -160,12 +54,12 @@ bool CompositorWorkerScheduler::ShouldYieldForHighPriorityWork() {
|
|
|
| void CompositorWorkerScheduler::AddTaskObserver(
|
| base::MessageLoop::TaskObserver* task_observer) {
|
| - thread_->message_loop()->AddTaskObserver(task_observer);
|
| + helper_->AddTaskObserver(task_observer);
|
| }
|
|
|
| void CompositorWorkerScheduler::RemoveTaskObserver(
|
| base::MessageLoop::TaskObserver* task_observer) {
|
| - thread_->message_loop()->RemoveTaskObserver(task_observer);
|
| + helper_->RemoveTaskObserver(task_observer);
|
| }
|
|
|
| void CompositorWorkerScheduler::Shutdown() {}
|
|
|