summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorccameron <ccameron@chromium.org>2015-02-04 13:08:55 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-04 21:09:51 +0000
commitafebf76e26c5cecb3fa043c410f64ed96243a09e (patch)
tree7e45e4849ddb8029927f1107e67c945f2ca98c16
parent5eb894ea21637241e9a78fb9c2737d40d6dbf575 (diff)
downloadchromium_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.mm7
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;
}