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; |
} |