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

Unified Diff: components/scheduler/child/compositor_worker_scheduler.cc

Issue 1895873006: compositor-worker: Initialize CW machinery plumbing to compositor and fire CW rAF callbacks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Include WebCompositorMutatorClient from WebLayerTreeView to allow unique_ptr usage. Created 4 years, 7 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: components/scheduler/child/compositor_worker_scheduler.cc
diff --git a/components/scheduler/child/compositor_worker_scheduler.cc b/components/scheduler/child/compositor_worker_scheduler.cc
index 38a8a4a5129a03c043863e94f4ed5d657c4f0bae..c088b1b3aac9545a6e89431109bedbe0ceeabffc 100644
--- a/components/scheduler/child/compositor_worker_scheduler.cc
+++ b/components/scheduler/child/compositor_worker_scheduler.cc
@@ -123,9 +123,13 @@ scoped_refptr<TaskQueue> CompositorWorkerScheduler::DefaultTaskRunner() {
scoped_refptr<scheduler::SingleThreadIdleTaskRunner>
CompositorWorkerScheduler::IdleTaskRunner() {
- // TODO(sad): Not having a task-runner for idle tasks means v8 has to fallback
- // to inline GC, which might cause jank.
- return nullptr;
+ // TODO(flackr): This posts idle tasks as regular tasks. We need to create
+ // an idle task runner with the semantics we want for the compositor thread
+ // which runs them after the current frame has been drawn before the next
+ // vsync. https://crbug.com/609532
+ return make_scoped_refptr(new SingleThreadIdleTaskRunner(
+ thread_->task_runner(), thread_->task_runner(), this,
+ "compositor.scheduler"));
}
bool CompositorWorkerScheduler::CanExceedIdleDeadlineIfRequired() const {
@@ -148,4 +152,15 @@ void CompositorWorkerScheduler::RemoveTaskObserver(
void CompositorWorkerScheduler::Shutdown() {}
+void CompositorWorkerScheduler::OnIdleTaskPosted() {}
+
+base::TimeTicks CompositorWorkerScheduler::WillProcessIdleTask() {
+ // TODO(flackr): Return the next frame time as the deadline instead.
+ // TODO(flackr): Ensure that oilpan GC does happen on the compositor thread
+ // even though we will have no long idle periods. https://crbug.com/609531
+ return base::TimeTicks::Now() + base::TimeDelta::FromMillisecondsD(16.7);
+}
+
+void CompositorWorkerScheduler::DidProcessIdleTask() {}
+
} // namespace scheduler
« no previous file with comments | « components/scheduler/child/compositor_worker_scheduler.h ('k') | content/renderer/gpu/render_widget_compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698