diff options
author | ccameron <ccameron@chromium.org> | 2015-02-04 13:08:55 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-04 21:09:51 +0000 |
commit | afebf76e26c5cecb3fa043c410f64ed96243a09e (patch) | |
tree | 7e45e4849ddb8029927f1107e67c945f2ca98c16 | |
parent | 5eb894ea21637241e9a78fb9c2737d40d6dbf575 (diff) | |
download | chromium_src-afebf76e26c5cecb3fa043c410f64ed96243a09e.zip chromium_src-afebf76e26c5cecb3fa043c410f64ed96243a09e.tar.gz chromium_src-afebf76e26c5cecb3fa043c410f64ed96243a09e.tar.bz2 |
Temporary workaround for flashing buts on Mac
Do not re-set the root layer for the ui::Compositor when suspending the
browser compositor view. Prior to moving the ui::Compositor to use the
scheduler, this would prevent frames from appearing. Now it causes blank
flashes.
There are still blue (debug) flashes when returning from fullscreen and
when the GPU process is killed. These still need to be fixed.
BUG=454682
Review URL: https://codereview.chromium.org/903543002
Cr-Commit-Position: refs/heads/master@{#314632}
-rw-r--r-- | content/browser/renderer_host/render_widget_host_view_mac.mm | 7 |
1 files changed, 2 insertions, 5 deletions
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 b0150f8..58b9d64 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -604,6 +604,7 @@ void RenderWidgetHostViewMac::EnsureBrowserCompositorView() { // Create the view, to transition from Destroyed -> Suspended. if (browser_compositor_state_ == BrowserCompositorDestroyed) { browser_compositor_ = BrowserCompositorMac::Create(); + browser_compositor_->compositor()->SetRootLayer(root_layer_.get()); browser_compositor_->accelerated_widget_mac()->SetNSView(this); browser_compositor_state_ = BrowserCompositorSuspended; } @@ -612,8 +613,6 @@ void RenderWidgetHostViewMac::EnsureBrowserCompositorView() { if (browser_compositor_state_ == BrowserCompositorSuspended) { delegated_frame_host_->SetCompositor(browser_compositor_->compositor()); delegated_frame_host_->WasShown(ui::LatencyInfo()); - browser_compositor_->compositor()->SetRootLayer( - root_layer_.get()); browser_compositor_state_ = BrowserCompositorActive; } } @@ -624,9 +623,6 @@ void RenderWidgetHostViewMac::SuspendBrowserCompositorView() { // Hide the DelegatedFrameHost to transition from Active -> Suspended. if (browser_compositor_state_ == BrowserCompositorActive) { - // Disconnect the root layer, which will prevent the compositor from - // producing more frames. - browser_compositor_->compositor()->SetRootLayer(nullptr); // Marking the DelegatedFrameHost as removed from the window hierarchy is // necessary to remove all connections to its old ui::Compositor. delegated_frame_host_->WasHidden(); @@ -646,6 +642,7 @@ void RenderWidgetHostViewMac::DestroyBrowserCompositorView() { if (browser_compositor_state_ == BrowserCompositorSuspended) { browser_compositor_->accelerated_widget_mac()->ResetNSView(); browser_compositor_->compositor()->SetScaleAndSize(1.0, gfx::Size(0, 0)); + browser_compositor_->compositor()->SetRootLayer(nullptr); BrowserCompositorMac::Recycle(browser_compositor_.Pass()); browser_compositor_state_ = BrowserCompositorDestroyed; } |