Index: cc/trees/single_thread_proxy.cc |
diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc |
index 1b57b350ce4c4a4e10275c61d846f21c264b9782..f7fb32cb93519c5a9f009b331f3bf98e2b8825b4 100644 |
--- a/cc/trees/single_thread_proxy.cc |
+++ b/cc/trees/single_thread_proxy.cc |
@@ -23,15 +23,19 @@ namespace cc { |
scoped_ptr<Proxy> SingleThreadProxy::Create( |
LayerTreeHost* layer_tree_host, |
LayerTreeHostSingleThreadClient* client, |
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner) { |
- return make_scoped_ptr( |
- new SingleThreadProxy(layer_tree_host, client, main_task_runner)); |
+ scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
+ scoped_refptr<ExternalBeginFrameSource> external_begin_frame_source) { |
+ return make_scoped_ptr(new SingleThreadProxy(layer_tree_host, |
+ client, |
+ main_task_runner, |
+ external_begin_frame_source)); |
} |
SingleThreadProxy::SingleThreadProxy( |
LayerTreeHost* layer_tree_host, |
LayerTreeHostSingleThreadClient* client, |
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner) |
+ scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
+ scoped_refptr<ExternalBeginFrameSource> external_begin_frame_source) |
: Proxy(main_task_runner, NULL), |
layer_tree_host_(layer_tree_host), |
client_(client), |
@@ -42,6 +46,7 @@ SingleThreadProxy::SingleThreadProxy( |
commit_was_deferred_(false), |
commit_requested_(false), |
output_surface_creation_requested_(false), |
+ external_begin_frame_source_(external_begin_frame_source), |
weak_factory_(this) { |
TRACE_EVENT0("cc", "SingleThreadProxy::SingleThreadProxy"); |
DCHECK(Proxy::IsMainThread()); |
@@ -83,12 +88,17 @@ void SingleThreadProxy::SetLayerTreeHostClientReady() { |
if (layer_tree_host_->settings().single_thread_proxy_scheduler && |
!scheduler_on_impl_thread_) { |
SchedulerSettings scheduler_settings(layer_tree_host_->settings()); |
- scheduler_on_impl_thread_ = Scheduler::Create(this, |
- scheduler_settings, |
- layer_tree_host_->id(), |
- MainThreadTaskRunner()); |
+ scheduler_on_impl_thread_ = |
+ Scheduler::Create(this, |
+ scheduler_settings, |
+ layer_tree_host_->id(), |
+ MainThreadTaskRunner(), |
+ external_begin_frame_source_); |
scheduler_on_impl_thread_->SetCanStart(); |
scheduler_on_impl_thread_->SetVisible(layer_tree_host_impl_->visible()); |
+ // |external_begin_frame_source_| is not used anymore by this. |
+ // Proxy only delivers |external_begin_frame_source_| to Scheduler. |
+ external_begin_frame_source_ = nullptr; |
} |
} |
@@ -612,10 +622,6 @@ bool SingleThreadProxy::MainFrameWillHappenForTesting() { |
return false; |
} |
-BeginFrameSource* SingleThreadProxy::ExternalBeginFrameSource() { |
- return layer_tree_host_impl_.get(); |
-} |
- |
void SingleThreadProxy::WillBeginImplFrame(const BeginFrameArgs& args) { |
layer_tree_host_impl_->WillBeginImplFrame(args); |
} |