Commit afebf76e authored by ccameron's avatar ccameron Committed by Commit bot

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}
parent 5eb894ea
...@@ -604,6 +604,7 @@ void RenderWidgetHostViewMac::EnsureBrowserCompositorView() { ...@@ -604,6 +604,7 @@ void RenderWidgetHostViewMac::EnsureBrowserCompositorView() {
// Create the view, to transition from Destroyed -> Suspended. // Create the view, to transition from Destroyed -> Suspended.
if (browser_compositor_state_ == BrowserCompositorDestroyed) { if (browser_compositor_state_ == BrowserCompositorDestroyed) {
browser_compositor_ = BrowserCompositorMac::Create(); browser_compositor_ = BrowserCompositorMac::Create();
browser_compositor_->compositor()->SetRootLayer(root_layer_.get());
browser_compositor_->accelerated_widget_mac()->SetNSView(this); browser_compositor_->accelerated_widget_mac()->SetNSView(this);
browser_compositor_state_ = BrowserCompositorSuspended; browser_compositor_state_ = BrowserCompositorSuspended;
} }
...@@ -612,8 +613,6 @@ void RenderWidgetHostViewMac::EnsureBrowserCompositorView() { ...@@ -612,8 +613,6 @@ void RenderWidgetHostViewMac::EnsureBrowserCompositorView() {
if (browser_compositor_state_ == BrowserCompositorSuspended) { if (browser_compositor_state_ == BrowserCompositorSuspended) {
delegated_frame_host_->SetCompositor(browser_compositor_->compositor()); delegated_frame_host_->SetCompositor(browser_compositor_->compositor());
delegated_frame_host_->WasShown(ui::LatencyInfo()); delegated_frame_host_->WasShown(ui::LatencyInfo());
browser_compositor_->compositor()->SetRootLayer(
root_layer_.get());
browser_compositor_state_ = BrowserCompositorActive; browser_compositor_state_ = BrowserCompositorActive;
} }
} }
...@@ -624,9 +623,6 @@ void RenderWidgetHostViewMac::SuspendBrowserCompositorView() { ...@@ -624,9 +623,6 @@ void RenderWidgetHostViewMac::SuspendBrowserCompositorView() {
// Hide the DelegatedFrameHost to transition from Active -> Suspended. // Hide the DelegatedFrameHost to transition from Active -> Suspended.
if (browser_compositor_state_ == BrowserCompositorActive) { 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 // Marking the DelegatedFrameHost as removed from the window hierarchy is
// necessary to remove all connections to its old ui::Compositor. // necessary to remove all connections to its old ui::Compositor.
delegated_frame_host_->WasHidden(); delegated_frame_host_->WasHidden();
...@@ -646,6 +642,7 @@ void RenderWidgetHostViewMac::DestroyBrowserCompositorView() { ...@@ -646,6 +642,7 @@ void RenderWidgetHostViewMac::DestroyBrowserCompositorView() {
if (browser_compositor_state_ == BrowserCompositorSuspended) { if (browser_compositor_state_ == BrowserCompositorSuspended) {
browser_compositor_->accelerated_widget_mac()->ResetNSView(); browser_compositor_->accelerated_widget_mac()->ResetNSView();
browser_compositor_->compositor()->SetScaleAndSize(1.0, gfx::Size(0, 0)); browser_compositor_->compositor()->SetScaleAndSize(1.0, gfx::Size(0, 0));
browser_compositor_->compositor()->SetRootLayer(nullptr);
BrowserCompositorMac::Recycle(browser_compositor_.Pass()); BrowserCompositorMac::Recycle(browser_compositor_.Pass());
browser_compositor_state_ = BrowserCompositorDestroyed; browser_compositor_state_ = BrowserCompositorDestroyed;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment