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 98d7ac172c0a69a99431f349bd6863ecc44d849c..f45e7f40c1c3028defaba8746b6d81954ee7bd0f 100644 |
--- a/content/browser/compositor/delegated_frame_host.cc |
+++ b/content/browser/compositor/delegated_frame_host.cc |
@@ -888,10 +888,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); |
} |
//////////////////////////////////////////////////////////////////////////////// |
@@ -917,6 +920,8 @@ |
surface_factory_->Destroy(surface_id_); |
if (resource_collection_.get()) |
resource_collection_->SetClient(NULL); |
+ |
+ DCHECK(!vsync_manager_.get()); |
} |
void DelegatedFrameHost::RunOnCommitCallbacks() { |
@@ -943,6 +948,9 @@ |
return; |
compositor_ = compositor; |
compositor_->AddObserver(this); |
+ DCHECK(!vsync_manager_.get()); |
+ vsync_manager_ = compositor_->vsync_manager(); |
+ vsync_manager_->AddObserver(this); |
} |
void DelegatedFrameHost::ResetCompositor() { |
@@ -955,6 +963,10 @@ |
} |
if (compositor_->HasObserver(this)) |
compositor_->RemoveObserver(this); |
+ if (vsync_manager_.get()) { |
+ vsync_manager_->RemoveObserver(this); |
+ vsync_manager_ = NULL; |
+ } |
compositor_ = nullptr; |
} |