Chromium Code Reviews| 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 9a19c54bd0238698b8a38370e6015b4d7d577fd0..c7480f35829457f9e615d07f785d92c61e13d0e1 100644 |
| --- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
| +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
| @@ -395,10 +395,10 @@ namespace content { |
| // DelegatedFrameHost, public: |
| ui::Compositor* RenderWidgetHostViewMac::GetCompositor() const { |
| - // When |browser_compositor_view_| is suspended or destroyed, the connection |
| + // When |browser_compositor_| is suspended or destroyed, the connection |
| // between its ui::Compositor and |delegated_frame_host_| has been severed. |
| if (browser_compositor_state_ == BrowserCompositorActive) |
| - return browser_compositor_view_->GetCompositor(); |
| + return browser_compositor_->compositor(); |
| return NULL; |
| } |
| @@ -440,9 +440,13 @@ DelegatedFrameHost* RenderWidgetHostViewMac::GetDelegatedFrameHost() const { |
| } |
| //////////////////////////////////////////////////////////////////////////////// |
| -// BrowserCompositorViewMacClient, public: |
| +// AcceleratedWidgetMacNSView, public: |
| -bool RenderWidgetHostViewMac::BrowserCompositorViewShouldAckImmediately() |
| +NSView* RenderWidgetHostViewMac::AcceleratedWidgetGetNSView() const { |
| + return cocoa_view_; |
| +} |
| + |
| +bool RenderWidgetHostViewMac::AcceleratedWidgetShouldIgnoreBackpressure() |
| const { |
| // If vsync is disabled, then always draw and ack frames immediately. |
| static bool is_vsync_disabled = |
| @@ -484,7 +488,7 @@ bool RenderWidgetHostViewMac::BrowserCompositorViewShouldAckImmediately() |
| return false; |
| } |
| -void RenderWidgetHostViewMac::BrowserCompositorViewFrameSwapped( |
| +void RenderWidgetHostViewMac::AcceleratedWidgetSwapCompleted( |
| const std::vector<ui::LatencyInfo>& all_latency_info) { |
| if (!render_widget_host_) |
| return; |
| @@ -495,6 +499,11 @@ void RenderWidgetHostViewMac::BrowserCompositorViewFrameSwapped( |
| } |
| } |
| +void RenderWidgetHostViewMac::AcceleratedWidgetHitError() { |
| + // Request a new frame be drawn. |
| + browser_compositor_->compositor()->ScheduleFullRedraw(); |
| +} |
| + |
| /////////////////////////////////////////////////////////////////////////////// |
| // RenderWidgetHostViewBase, public: |
| @@ -513,8 +522,7 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget, |
| text_input_type_(ui::TEXT_INPUT_TYPE_NONE), |
| can_compose_inline_(true), |
| browser_compositor_state_(BrowserCompositorDestroyed), |
| - browser_compositor_view_placeholder_( |
| - new BrowserCompositorViewPlaceholderMac), |
| + browser_compositor_placeholder_(new BrowserCompositorMacPlaceholder), |
| is_loading_(false), |
| allow_pause_for_resize_or_repaint_(true), |
| is_guest_view_hack_(is_guest_view_hack), |
| @@ -588,8 +596,11 @@ void RenderWidgetHostViewMac::EnsureBrowserCompositorView() { |
| // Create the view, to transition from Destroyed -> Suspended. |
| if (browser_compositor_state_ == BrowserCompositorDestroyed) { |
| - browser_compositor_view_.reset( |
| - new BrowserCompositorViewMac(this, cocoa_view_, root_layer_.get())); |
| + browser_compositor_.reset(BrowserCompositorMac::Create()); |
|
tapted
2014/11/20 23:18:07
with the scoped_ptr arg tweaks, this would become
ccameron
2014/11/21 01:32:41
Done.
|
| + browser_compositor_->compositor()->SetRootLayer( |
| + root_layer_.get()); |
| + browser_compositor_->accelerated_widget_mac()->SetNSView(this); |
| + browser_compositor_->compositor()->SetVisible(true); |
| browser_compositor_state_ = BrowserCompositorSuspended; |
| } |
| @@ -624,7 +635,11 @@ void RenderWidgetHostViewMac::DestroyBrowserCompositorView() { |
| // Destroy the BrowserCompositorView to transition Suspended -> Destroyed. |
| if (browser_compositor_state_ == BrowserCompositorSuspended) { |
| - browser_compositor_view_.reset(); |
| + browser_compositor_->accelerated_widget_mac()->ResetNSView(); |
| + browser_compositor_->compositor()->SetVisible(false); |
| + browser_compositor_->compositor()->SetScaleAndSize(1.0, gfx::Size(0, 0)); |
| + browser_compositor_->compositor()->SetRootLayer(NULL); |
| + BrowserCompositorMac::Recycle(browser_compositor_.release()); |
|
tapted
2014/11/20 23:18:07
and .release() -> .Pass()
ccameron
2014/11/21 01:32:41
Done.
|
| browser_compositor_state_ = BrowserCompositorDestroyed; |
| } |
| } |
| @@ -1400,8 +1415,10 @@ bool RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange( |
| bool RenderWidgetHostViewMac::HasAcceleratedSurface( |
| const gfx::Size& desired_size) { |
| - if (browser_compositor_view_) |
| - return browser_compositor_view_->HasFrameOfSize(desired_size); |
| + if (browser_compositor_) { |
| + return browser_compositor_->accelerated_widget_mac()->HasFrameOfSize( |
| + desired_size); |
| + } |
| return false; |
| } |
| @@ -1423,7 +1440,7 @@ void RenderWidgetHostViewMac::OnSwapCompositorFrame( |
| root_layer_->SetBounds(gfx::Rect(dip_size)); |
| if (!render_widget_host_->is_hidden()) { |
| EnsureBrowserCompositorView(); |
| - browser_compositor_view_->GetCompositor()->SetScaleAndSize( |
| + browser_compositor_->compositor()->SetScaleAndSize( |
| scale_factor, pixel_size); |
| } |
| @@ -1520,7 +1537,7 @@ void RenderWidgetHostViewMac::ShutdownBrowserCompositor() { |
| DestroyBrowserCompositorView(); |
| delegated_frame_host_.reset(); |
| root_layer_.reset(); |
| - browser_compositor_view_placeholder_.reset(); |
| + browser_compositor_placeholder_.reset(); |
| } |
| void RenderWidgetHostViewMac::SetActive(bool active) { |
| @@ -1646,11 +1663,11 @@ void RenderWidgetHostViewMac::PauseForPendingResizeOrRepaintsAndDraw() { |
| return; |
| // Wait for a frame of the right size to come in. |
| - if (browser_compositor_view_) |
| - browser_compositor_view_->BeginPumpingFrames(); |
| + if (browser_compositor_) |
| + browser_compositor_->accelerated_widget_mac()->BeginPumpingFrames(); |
| render_widget_host_->PauseForPendingResizeOrRepaints(); |
| - if (browser_compositor_view_) |
| - browser_compositor_view_->EndPumpingFrames(); |
| + if (browser_compositor_) |
| + browser_compositor_->accelerated_widget_mac()->EndPumpingFrames(); |
| } |
| SkColorType RenderWidgetHostViewMac::PreferredReadbackFormat() { |