| Index: content/browser/compositor/delegated_frame_host.cc | 
| diff --git a/content/browser/compositor/delegated_frame_host.cc b/content/browser/compositor/delegated_frame_host.cc | 
| index 2c266febd3c6d1f3abcce159b16aeec2581bb59e..e6cb16150673df0c4db6cc80b28610e4154792a2 100644 | 
| --- a/content/browser/compositor/delegated_frame_host.cc | 
| +++ b/content/browser/compositor/delegated_frame_host.cc | 
| @@ -878,10 +878,13 @@ | 
| DCHECK(!compositor_); | 
| } | 
|  | 
| -void DelegatedFrameHost::SetVSyncParameters(base::TimeTicks timebase, | 
| -                                            base::TimeDelta interval) { | 
| +void DelegatedFrameHost::OnUpdateVSyncParameters( | 
| +    base::TimeTicks timebase, | 
| +    base::TimeDelta interval) { | 
| vsync_timebase_ = timebase; | 
| vsync_interval_ = interval; | 
| +  if (client_->DelegatedFrameHostIsVisible()) | 
| +    client_->DelegatedFrameHostUpdateVSyncParameters(timebase, interval); | 
| } | 
|  | 
| //////////////////////////////////////////////////////////////////////////////// | 
| @@ -907,6 +910,8 @@ | 
| surface_factory_->Destroy(surface_id_); | 
| if (resource_collection_.get()) | 
| resource_collection_->SetClient(NULL); | 
| + | 
| +  DCHECK(!vsync_manager_.get()); | 
| } | 
|  | 
| void DelegatedFrameHost::RunOnCommitCallbacks() { | 
| @@ -933,6 +938,9 @@ | 
| return; | 
| compositor_ = compositor; | 
| compositor_->AddObserver(this); | 
| +  DCHECK(!vsync_manager_.get()); | 
| +  vsync_manager_ = compositor_->vsync_manager(); | 
| +  vsync_manager_->AddObserver(this); | 
| } | 
|  | 
| void DelegatedFrameHost::ResetCompositor() { | 
| @@ -945,6 +953,10 @@ | 
| } | 
| if (compositor_->HasObserver(this)) | 
| compositor_->RemoveObserver(this); | 
| +  if (vsync_manager_.get()) { | 
| +    vsync_manager_->RemoveObserver(this); | 
| +    vsync_manager_ = NULL; | 
| +  } | 
| compositor_ = nullptr; | 
| } | 
|  | 
|  |