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

Unified Diff: Source/platform/scheduler/Scheduler.cpp

Issue 364873002: Introduce a basic Blink Scheduler (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Cleaned up includes + build fix. Created 6 years, 5 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
« no previous file with comments | « Source/platform/scheduler/Scheduler.h ('k') | Source/platform/scheduler/SchedulerTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/scheduler/Scheduler.cpp
diff --git a/Source/platform/scheduler/Scheduler.cpp b/Source/platform/scheduler/Scheduler.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8f2c0ca0c75a5844ea58b4a223a35a0da9fd0d83
--- /dev/null
+++ b/Source/platform/scheduler/Scheduler.cpp
@@ -0,0 +1,117 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+#include "platform/scheduler/Scheduler.h"
+
+#include "platform/Task.h"
+#include "platform/TraceEvent.h"
+#include "public/platform/Platform.h"
+#include "public/platform/WebThread.h"
+
+namespace WebCore {
+
+namespace {
+
+class MainThreadTaskAdapter : public blink::WebThread::Task {
+public:
+ explicit MainThreadTaskAdapter(const Scheduler::Task& task)
+ : m_task(task)
+ {
+ }
+
+ // WebThread::Task implementation.
+ virtual void run() OVERRIDE
+ {
+ TRACE_EVENT0("blink", "MainThreadTaskAdapter::run");
+ m_task();
+ }
+
+private:
+ Scheduler::Task m_task;
+};
+
+}
+
+Scheduler* Scheduler::s_sharedScheduler = nullptr;
+
+void Scheduler::initializeOnMainThread()
+{
+ s_sharedScheduler = new Scheduler();
picksi1 2014/08/01 10:36:12 nit: Is it worth checking that s_sharedScheduler i
+}
+
+void Scheduler::shutdown()
+{
+ delete s_sharedScheduler;
+ s_sharedScheduler = nullptr;
+}
+
+Scheduler* Scheduler::shared()
+{
+ return s_sharedScheduler;
+}
+
+Scheduler::Scheduler()
+ : m_mainThread(blink::Platform::current()->currentThread())
+ , m_sharedTimerFunction(nullptr)
+{
+}
+
+Scheduler::~Scheduler()
+{
+}
+
+void Scheduler::scheduleTask(const Task& task)
+{
+ m_mainThread->postTask(new MainThreadTaskAdapter(task));
+}
+
+void Scheduler::postTask(const Task& task)
+{
+ scheduleTask(task);
+}
+
+void Scheduler::postInputTask(const Task& task)
+{
+ scheduleTask(task);
+}
+
+void Scheduler::postCompositorTask(const Task& task)
+{
+ scheduleTask(task);
+}
+
+void Scheduler::tickSharedTimer()
+{
+ TRACE_EVENT0("blink", "Scheduler::tickSharedTimer");
+ m_sharedTimerFunction();
+}
+
+void Scheduler::sharedTimerAdapter()
+{
+ shared()->tickSharedTimer();
+}
+
+void Scheduler::setSharedTimerFiredFunction(void (*function)())
+{
+ m_sharedTimerFunction = function;
+ blink::Platform::current()->setSharedTimerFiredFunction(function ? &Scheduler::sharedTimerAdapter : nullptr);
+}
+
+void Scheduler::setSharedTimerFireInterval(double interval)
+{
+ blink::Platform::current()->setSharedTimerFireInterval(interval);
+}
+
+void Scheduler::stopSharedTimer()
+{
+ blink::Platform::current()->stopSharedTimer();
+}
+
+bool Scheduler::shouldYieldForHighPriorityWork()
+{
+ return false;
+}
+
+} // namespace WebCore
« no previous file with comments | « Source/platform/scheduler/Scheduler.h ('k') | Source/platform/scheduler/SchedulerTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698