| Index: content/browser/android/in_process/synchronous_compositor_impl.cc
|
| diff --git a/content/browser/android/in_process/synchronous_compositor_impl.cc b/content/browser/android/in_process/synchronous_compositor_impl.cc
|
| index d3c6b830b7082bf6e2dec32f803b6751d249aa47..7940597124474939cf5bb6f869a21cb5c51e57e4 100644
|
| --- a/content/browser/android/in_process/synchronous_compositor_impl.cc
|
| +++ b/content/browser/android/in_process/synchronous_compositor_impl.cc
|
| @@ -74,6 +74,7 @@ SynchronousCompositorImpl::SynchronousCompositorImpl(WebContents* contents)
|
| contents_(contents),
|
| routing_id_(contents->GetRoutingID()),
|
| input_handler_(NULL),
|
| + has_initialized_(false),
|
| is_active_(false),
|
| renderer_needs_begin_frames_(false),
|
| weak_ptr_factory_(this) {
|
| @@ -140,11 +141,9 @@ void SynchronousCompositorImpl::DidInitializeRendererObjects(
|
| base::Bind(&SynchronousCompositorImpl::DidActivatePendingTree,
|
| weak_ptr_factory_.GetWeakPtr()));
|
|
|
| - OnNeedsBeginFramesChange(begin_frame_source_->NeedsBeginFrames());
|
| -
|
| - compositor_client_->DidInitializeCompositor(this);
|
| -
|
| SetInputHandler(input_handler);
|
| +
|
| + OnNeedsBeginFramesChange(begin_frame_source_->NeedsBeginFrames());
|
| }
|
|
|
| void SynchronousCompositorImpl::DidDestroyRendererObjects() {
|
| @@ -152,6 +151,8 @@ void SynchronousCompositorImpl::DidDestroyRendererObjects() {
|
| DCHECK(begin_frame_source_);
|
| DCHECK(compositor_client_);
|
|
|
| + OnNeedsBeginFramesChange(false);
|
| +
|
| begin_frame_source_->SetCompositor(nullptr);
|
| output_surface_->SetCompositor(nullptr);
|
| SetInputHandler(nullptr);
|
| @@ -263,7 +264,8 @@ void SynchronousCompositorImpl::UpdateNeedsBeginFrames() {
|
| RenderWidgetHostViewAndroid* rwhv = static_cast<RenderWidgetHostViewAndroid*>(
|
| contents_->GetRenderWidgetHostView());
|
| if (rwhv)
|
| - rwhv->OnSetNeedsBeginFrames(is_active_ && renderer_needs_begin_frames_);
|
| + rwhv->OnSetNeedsBeginFrames((is_active_ || !has_initialized_) &&
|
| + renderer_needs_begin_frames_);
|
| }
|
|
|
| void SynchronousCompositorImpl::SetInputHandler(
|
| @@ -315,6 +317,10 @@ void SynchronousCompositorImpl::DeliverMessages() {
|
|
|
| void SynchronousCompositorImpl::DidActivatePendingTree() {
|
| DCHECK(compositor_client_);
|
| + if (!has_initialized_) {
|
| + has_initialized_ = true;
|
| + compositor_client_->DidInitializeCompositor(this);
|
| + }
|
| compositor_client_->DidUpdateContent();
|
| DeliverMessages();
|
| }
|
|
|