summaryrefslogtreecommitdiffstats
path: root/components/scheduler/renderer
diff options
context:
space:
mode:
authorskyostil <skyostil@chromium.org>2015-07-16 07:39:26 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-16 14:40:10 +0000
commit2a96102e57a45f9c87187fb2b4f35c3cdba6153a (patch)
tree1f954fb30f9730d86974266671864715d8046b01 /components/scheduler/renderer
parent2758adfdb7d5e8274152f443ee924163812e1c61 (diff)
downloadchromium_src-2a96102e57a45f9c87187fb2b4f35c3cdba6153a.zip
chromium_src-2a96102e57a45f9c87187fb2b4f35c3cdba6153a.tar.gz
chromium_src-2a96102e57a45f9c87187fb2b4f35c3cdba6153a.tar.bz2
Implement PostDelayedTaskAt for guaranteed timer ordering
This patch implements a new method for posting delayed tasks: PostDelayedTaskAt(). In contrast to PostDelayedTask(), this API accepts the desired run time as an absolute time stamp instead of a delta from the current time. This makes it possible for Blink to post several aligned timers to the same desired run time and have the timers execute in their posted order. BUG=508279 Review URL: https://codereview.chromium.org/1223163006 Cr-Commit-Position: refs/heads/master@{#339024}
Diffstat (limited to 'components/scheduler/renderer')
-rw-r--r--components/scheduler/renderer/null_renderer_scheduler.cc12
-rw-r--r--components/scheduler/renderer/null_renderer_scheduler.h7
-rw-r--r--components/scheduler/renderer/renderer_scheduler.h2
-rw-r--r--components/scheduler/renderer/renderer_scheduler_impl.cc7
-rw-r--r--components/scheduler/renderer/renderer_scheduler_impl.h6
-rw-r--r--components/scheduler/renderer/renderer_web_scheduler_impl.cc1
-rw-r--r--components/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc1
7 files changed, 18 insertions, 18 deletions
diff --git a/components/scheduler/renderer/null_renderer_scheduler.cc b/components/scheduler/renderer/null_renderer_scheduler.cc
index e5052ad..11b577f 100644
--- a/components/scheduler/renderer/null_renderer_scheduler.cc
+++ b/components/scheduler/renderer/null_renderer_scheduler.cc
@@ -8,19 +8,18 @@
#include "base/message_loop/message_loop.h"
#include "base/thread_task_runner_handle.h"
#include "components/scheduler/child/null_idle_task_runner.h"
+#include "components/scheduler/child/null_task_queue.h"
namespace scheduler {
NullRendererScheduler::NullRendererScheduler()
- : task_runner_(base::ThreadTaskRunnerHandle::Get()),
- idle_task_runner_(new NullIdleTaskRunner()) {
-}
+ : task_runner_(new NullTaskQueue(base::ThreadTaskRunnerHandle::Get())),
+ idle_task_runner_(new NullIdleTaskRunner()) {}
NullRendererScheduler::~NullRendererScheduler() {
}
-scoped_refptr<base::SingleThreadTaskRunner>
-NullRendererScheduler::DefaultTaskRunner() {
+scoped_refptr<TaskQueue> NullRendererScheduler::DefaultTaskRunner() {
return task_runner_;
}
@@ -39,8 +38,7 @@ NullRendererScheduler::IdleTaskRunner() {
return idle_task_runner_;
}
-scoped_refptr<base::SingleThreadTaskRunner>
-NullRendererScheduler::TimerTaskRunner() {
+scoped_refptr<TaskQueue> NullRendererScheduler::TimerTaskRunner() {
return task_runner_;
}
diff --git a/components/scheduler/renderer/null_renderer_scheduler.h b/components/scheduler/renderer/null_renderer_scheduler.h
index 753bc9a..b989e07 100644
--- a/components/scheduler/renderer/null_renderer_scheduler.h
+++ b/components/scheduler/renderer/null_renderer_scheduler.h
@@ -8,17 +8,18 @@
#include "components/scheduler/renderer/renderer_scheduler.h"
namespace scheduler {
+class NullTaskQueue;
class NullRendererScheduler : public RendererScheduler {
public:
NullRendererScheduler();
~NullRendererScheduler() override;
- scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override;
+ scoped_refptr<TaskQueue> DefaultTaskRunner() override;
scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override;
scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() override;
scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override;
- scoped_refptr<base::SingleThreadTaskRunner> TimerTaskRunner() override;
+ scoped_refptr<TaskQueue> TimerTaskRunner() override;
void WillBeginFrame(const cc::BeginFrameArgs& args) override;
void BeginFrameNotExpectedSoon() override;
@@ -43,7 +44,7 @@ class NullRendererScheduler : public RendererScheduler {
void ResumeTimerQueue() override;
private:
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<NullTaskQueue> task_runner_;
scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_;
DISALLOW_COPY_AND_ASSIGN(NullRendererScheduler);
diff --git a/components/scheduler/renderer/renderer_scheduler.h b/components/scheduler/renderer/renderer_scheduler.h
index 2348511..c5955b5 100644
--- a/components/scheduler/renderer/renderer_scheduler.h
+++ b/components/scheduler/renderer/renderer_scheduler.h
@@ -31,7 +31,7 @@ class SCHEDULER_EXPORT RendererScheduler : public ChildScheduler {
virtual scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() = 0;
// Returns the timer task runner. This queue is intended for DOM Timers.
- virtual scoped_refptr<base::SingleThreadTaskRunner> TimerTaskRunner() = 0;
+ virtual scoped_refptr<TaskQueue> TimerTaskRunner() = 0;
// Called to notify about the start of an extended period where no frames
// need to be drawn. Must be called from the main thread.
diff --git a/components/scheduler/renderer/renderer_scheduler_impl.cc b/components/scheduler/renderer/renderer_scheduler_impl.cc
index 51c51ae..a885387 100644
--- a/components/scheduler/renderer/renderer_scheduler_impl.cc
+++ b/components/scheduler/renderer/renderer_scheduler_impl.cc
@@ -11,6 +11,7 @@
#include "cc/output/begin_frame_args.h"
#include "components/scheduler/child/nestable_single_thread_task_runner.h"
#include "components/scheduler/child/prioritizing_task_queue_selector.h"
+#include "components/scheduler/child/task_queue.h"
namespace scheduler {
@@ -89,8 +90,7 @@ void RendererSchedulerImpl::Shutdown() {
MainThreadOnly().was_shutdown_ = true;
}
-scoped_refptr<base::SingleThreadTaskRunner>
-RendererSchedulerImpl::DefaultTaskRunner() {
+scoped_refptr<TaskQueue> RendererSchedulerImpl::DefaultTaskRunner() {
return helper_.DefaultTaskRunner();
}
@@ -111,8 +111,7 @@ RendererSchedulerImpl::LoadingTaskRunner() {
return loading_task_runner_;
}
-scoped_refptr<base::SingleThreadTaskRunner>
-RendererSchedulerImpl::TimerTaskRunner() {
+scoped_refptr<TaskQueue> RendererSchedulerImpl::TimerTaskRunner() {
helper_.CheckOnValidThread();
return timer_task_runner_;
}
diff --git a/components/scheduler/renderer/renderer_scheduler_impl.h b/components/scheduler/renderer/renderer_scheduler_impl.h
index a6c2138..e251538 100644
--- a/components/scheduler/renderer/renderer_scheduler_impl.h
+++ b/components/scheduler/renderer/renderer_scheduler_impl.h
@@ -30,11 +30,11 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler,
~RendererSchedulerImpl() override;
// RendererScheduler implementation:
- scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override;
+ scoped_refptr<TaskQueue> DefaultTaskRunner() override;
scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override;
scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override;
scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() override;
- scoped_refptr<base::SingleThreadTaskRunner> TimerTaskRunner() override;
+ scoped_refptr<TaskQueue> TimerTaskRunner() override;
void WillBeginFrame(const cc::BeginFrameArgs& args) override;
void BeginFrameNotExpectedSoon() override;
void DidCommitFrameToCompositor() override;
@@ -199,7 +199,7 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler,
const scoped_refptr<base::SingleThreadTaskRunner> control_task_runner_;
const scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
const scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner_;
- const scoped_refptr<base::SingleThreadTaskRunner> timer_task_runner_;
+ const scoped_refptr<TaskQueue> timer_task_runner_;
base::Closure update_policy_closure_;
DeadlineTaskRunner delayed_update_policy_runner_;
diff --git a/components/scheduler/renderer/renderer_web_scheduler_impl.cc b/components/scheduler/renderer/renderer_web_scheduler_impl.cc
index b54bf9a..c833b70 100644
--- a/components/scheduler/renderer/renderer_web_scheduler_impl.cc
+++ b/components/scheduler/renderer/renderer_web_scheduler_impl.cc
@@ -4,6 +4,7 @@
#include "components/scheduler/renderer/renderer_web_scheduler_impl.h"
+#include "components/scheduler/child/task_queue.h"
#include "components/scheduler/renderer/renderer_scheduler.h"
namespace scheduler {
diff --git a/components/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc b/components/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc
index 2822456..b7720b1 100644
--- a/components/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc
+++ b/components/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc
@@ -4,6 +4,7 @@
#include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h"
+#include "components/scheduler/child/task_queue.h"
#include "components/scheduler/renderer/renderer_scheduler.h"
#include "components/scheduler/renderer/renderer_web_scheduler_impl.h"
#include "third_party/WebKit/public/platform/WebTraceLocation.h"