Index: cc/trees/thread_proxy.cc |
diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc |
index 34283c9212da3a798c0f11d87a5634ddbfd26058..bf36fee8ce3123da447e85a45a1a4377cc07d2c5 100644 |
--- a/cc/trees/thread_proxy.cc |
+++ b/cc/trees/thread_proxy.cc |
@@ -48,22 +48,27 @@ struct ThreadProxy::SchedulerStateRequest { |
scoped_ptr<Proxy> ThreadProxy::Create( |
LayerTreeHost* layer_tree_host, |
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { |
- return make_scoped_ptr( |
- new ThreadProxy(layer_tree_host, main_task_runner, impl_task_runner)); |
+ scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
+ scoped_refptr<ExternalBeginFrameSource> external_begin_frame_source) { |
+ return make_scoped_ptr(new ThreadProxy(layer_tree_host, |
+ main_task_runner, |
+ impl_task_runner, |
+ external_begin_frame_source)); |
} |
ThreadProxy::ThreadProxy( |
LayerTreeHost* layer_tree_host, |
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) |
+ scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
+ scoped_refptr<ExternalBeginFrameSource> external_begin_frame_source) |
: Proxy(main_task_runner, impl_task_runner), |
main_thread_only_vars_unsafe_(this, layer_tree_host->id()), |
main_thread_or_blocked_vars_unsafe_(layer_tree_host), |
compositor_thread_vars_unsafe_( |
this, |
layer_tree_host->id(), |
- layer_tree_host->rendering_stats_instrumentation()) { |
+ layer_tree_host->rendering_stats_instrumentation()), |
+ external_begin_frame_source_(external_begin_frame_source) { |
TRACE_EVENT0("cc", "ThreadProxy::ThreadProxy"); |
DCHECK(IsMainThread()); |
DCHECK(this->layer_tree_host()); |
@@ -349,10 +354,6 @@ void ThreadProxy::DidSwapBuffersCompleteOnImplThread() { |
base::Bind(&ThreadProxy::DidCompleteSwapBuffers, main_thread_weak_ptr_)); |
} |
-BeginFrameSource* ThreadProxy::ExternalBeginFrameSource() { |
- return impl().layer_tree_host_impl.get(); |
-} |
- |
void ThreadProxy::WillBeginImplFrame(const BeginFrameArgs& args) { |
impl().layer_tree_host_impl->WillBeginImplFrame(args); |
} |
@@ -1183,8 +1184,12 @@ void ThreadProxy::InitializeImplOnImplThread(CompletionEvent* completion) { |
impl().scheduler = Scheduler::Create(this, |
scheduler_settings, |
impl().layer_tree_host_id, |
- ImplThreadTaskRunner()); |
+ ImplThreadTaskRunner(), |
+ external_begin_frame_source_); |
impl().scheduler->SetVisible(impl().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; |
impl_thread_weak_ptr_ = impl().weak_factory.GetWeakPtr(); |
completion->Signal(); |
@@ -1243,7 +1248,6 @@ void ThreadProxy::LayerTreeHostClosedOnImplThread(CompletionEvent* completion) { |
layer_tree_host()->DeleteContentsTexturesOnImplThread( |
impl().layer_tree_host_impl->resource_provider()); |
impl().current_resource_update_controller = nullptr; |
- impl().layer_tree_host_impl->SetNeedsBeginFrames(false); |
impl().scheduler = nullptr; |
impl().layer_tree_host_impl = nullptr; |
impl().weak_factory.InvalidateWeakPtrs(); |