Index: content/browser/renderer_host/render_widget_host_view_mac.mm |
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm |
index 7f3cb354dc05c946fc6ce1534b5eb6a1ebcd1fea..af770742e77a00eb78df7cd135afad3fc0bc4dee 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
@@ -615,6 +615,7 @@ void RenderWidgetHostViewMac::EnsureBrowserCompositorView() { |
if (browser_compositor_state_ == BrowserCompositorSuspended) { |
delegated_frame_host_->SetCompositor(browser_compositor_->compositor()); |
delegated_frame_host_->WasShown(ui::LatencyInfo()); |
+ browser_compositor_->compositor()->SetDeferCommits(false); |
browser_compositor_state_ = BrowserCompositorActive; |
} |
} |
@@ -625,6 +626,10 @@ void RenderWidgetHostViewMac::SuspendBrowserCompositorView() { |
// Hide the DelegatedFrameHost to transition from Active -> Suspended. |
if (browser_compositor_state_ == BrowserCompositorActive) { |
+ // Ensure that any changes made to the ui::Compositor do not result in new |
+ // frames being produced. Note that this does not ensure that |
+ // already-in-flight frames will be aborted. |
+ browser_compositor_->compositor()->SetDeferCommits(true); |
// Marking the DelegatedFrameHost as removed from the window hierarchy is |
// necessary to remove all connections to its old ui::Compositor. |
delegated_frame_host_->WasHidden(); |