| 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();
|
|
|