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

Unified Diff: cc/scheduler/scheduler.cc

Issue 1774323003: Allow cc::Scheduler begin frame source to be changed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scheduler_always_external
Patch Set: Add early out Created 4 years, 9 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 | « cc/scheduler/scheduler.h ('k') | cc/scheduler/scheduler_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scheduler/scheduler.cc
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
index f5c6d6012d6591bd020484c3cc9df5f0562471a7..7dcf7389c7624c3f51c4b2e15a840aa51b524a65 100644
--- a/cc/scheduler/scheduler.cc
+++ b/cc/scheduler/scheduler.cc
@@ -49,7 +49,7 @@ Scheduler::Scheduler(
client_(client),
layer_tree_host_id_(layer_tree_host_id),
task_runner_(task_runner),
- begin_frame_source_(begin_frame_source),
+ begin_frame_source_(nullptr),
observing_begin_frame_source_(false),
compositor_timing_history_(std::move(compositor_timing_history)),
begin_impl_frame_deadline_mode_(
@@ -68,6 +68,7 @@ Scheduler::Scheduler(
begin_impl_frame_deadline_closure_ = base::Bind(
&Scheduler::OnBeginImplFrameDeadline, weak_factory_.GetWeakPtr());
+ SetBeginFrameSource(begin_frame_source);
ProcessScheduledActions();
}
@@ -113,6 +114,17 @@ void Scheduler::NotifyReadyToDraw() {
ProcessScheduledActions();
}
+void Scheduler::SetBeginFrameSource(BeginFrameSource* source) {
+ DCHECK(source);
+ if (source == begin_frame_source_)
+ return;
+ if (begin_frame_source_ && observing_begin_frame_source_)
+ begin_frame_source_->RemoveObserver(this);
+ begin_frame_source_ = source;
+ if (observing_begin_frame_source_)
+ begin_frame_source_->AddObserver(this);
+}
+
void Scheduler::SetNeedsBeginMainFrame() {
state_machine_.SetNeedsBeginMainFrame();
ProcessScheduledActions();
@@ -744,7 +756,7 @@ void Scheduler::AsValueInto(base::trace_event::TracedValue* state) const {
TRACE_EVENT_CATEGORY_GROUP_ENABLED(
TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.frames"),
&frame_tracing_enabled);
- if (frame_tracing_enabled) {
+ if (frame_tracing_enabled && begin_frame_source_) {
state->BeginDictionary("begin_frame_source_");
begin_frame_source_->AsValueInto(state);
state->EndDictionary();
« no previous file with comments | « cc/scheduler/scheduler.h ('k') | cc/scheduler/scheduler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698