| 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..261a2d4e00ec619041d952c75417f04453583506 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:
|
| +// AcceleratedWidgetMacClient, public:
|
|
|
| -bool RenderWidgetHostViewMac::BrowserCompositorViewShouldAckImmediately()
|
| +NSView* RenderWidgetHostViewMac::AcceleratedWidgetClientGetNSView() 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,8 @@ 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 +597,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()));
|
| + BrowserCompositorMac::AcquireCompositor(&browser_compositor_);
|
| + browser_compositor_->compositor()->SetRootLayer(
|
| + root_layer_.get());
|
| + browser_compositor_->accelerated_widget_mac()->SetClient(this);
|
| + browser_compositor_->compositor()->SetVisible(true);
|
| browser_compositor_state_ = BrowserCompositorSuspended;
|
| }
|
|
|
| @@ -624,7 +636,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()->ResetClient();
|
| + browser_compositor_->compositor()->SetVisible(false);
|
| + browser_compositor_->compositor()->SetScaleAndSize(1.0, gfx::Size(0, 0));
|
| + browser_compositor_->compositor()->SetRootLayer(NULL);
|
| + BrowserCompositorMac::ReleaseCompositor(&browser_compositor_);
|
| browser_compositor_state_ = BrowserCompositorDestroyed;
|
| }
|
| }
|
| @@ -1400,8 +1416,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 +1441,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 +1538,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 +1664,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() {
|
|
|