| Index: content/browser/compositor/browser_compositor_ca_layer_tree_mac.mm
|
| diff --git a/content/browser/compositor/browser_compositor_ca_layer_tree_mac.mm b/content/browser/compositor/browser_compositor_ca_layer_tree_mac.mm
|
| index 6a8e51cfdaf2d05eb26ea19914de34132455fbb8..3abee8cd7630ff56ae0a427617a7313555cb26a0 100644
|
| --- a/content/browser/compositor/browser_compositor_ca_layer_tree_mac.mm
|
| +++ b/content/browser/compositor/browser_compositor_ca_layer_tree_mac.mm
|
| @@ -32,7 +32,7 @@ base::LazyInstance<WidgetToInternalsMap> g_widget_to_internals_map;
|
| // BrowserCompositorCALayerTreeMac
|
|
|
| BrowserCompositorCALayerTreeMac::BrowserCompositorCALayerTreeMac()
|
| - : client_(NULL),
|
| + : view_(NULL),
|
| accelerated_output_surface_id_(0) {
|
| // Disable the fade-in animation as the layers are added.
|
| ScopedCAActionDisabler disabler;
|
| @@ -64,28 +64,28 @@ BrowserCompositorCALayerTreeMac::BrowserCompositorCALayerTreeMac()
|
| }
|
|
|
| BrowserCompositorCALayerTreeMac::~BrowserCompositorCALayerTreeMac() {
|
| - DCHECK(!client_);
|
| + DCHECK(!view_);
|
| g_widget_to_internals_map.Pointer()->erase(native_widget_);
|
| }
|
|
|
| -void BrowserCompositorCALayerTreeMac::SetClient(
|
| - BrowserCompositorViewMacClient* client) {
|
| +void BrowserCompositorCALayerTreeMac::SetView(
|
| + BrowserCompositorViewMac* view) {
|
| // Disable the fade-in animation as the view is added.
|
| ScopedCAActionDisabler disabler;
|
|
|
| - DCHECK(client && !client_);
|
| - client_ = client;
|
| - compositor_->SetRootLayer(client_->BrowserCompositorRootLayer());
|
| + DCHECK(view && !view_);
|
| + view_ = view;
|
| + compositor_->SetRootLayer(view_->ui_root_layer());
|
|
|
| - CALayer* background_layer = [client_->BrowserCompositorSuperview() layer];
|
| + CALayer* background_layer = [view_->native_view() layer];
|
| DCHECK(background_layer);
|
| [flipped_layer_ setBounds:[background_layer bounds]];
|
| [background_layer addSublayer:flipped_layer_];
|
| compositor_->SetVisible(true);
|
| }
|
|
|
| -void BrowserCompositorCALayerTreeMac::ResetClient() {
|
| - if (!client_)
|
| +void BrowserCompositorCALayerTreeMac::ResetView() {
|
| + if (!view_)
|
| return;
|
|
|
| // Disable the fade-out animation as the view is removed.
|
| @@ -102,7 +102,7 @@ void BrowserCompositorCALayerTreeMac::ResetClient() {
|
| compositor_->SetVisible(false);
|
| compositor_->SetScaleAndSize(1.0, gfx::Size(0, 0));
|
| compositor_->SetRootLayer(NULL);
|
| - client_ = NULL;
|
| + view_ = NULL;
|
| }
|
|
|
| bool BrowserCompositorCALayerTreeMac::HasFrameOfSize(
|
| @@ -117,8 +117,8 @@ int BrowserCompositorCALayerTreeMac::GetRendererID() const {
|
| }
|
|
|
| bool BrowserCompositorCALayerTreeMac::IsRendererThrottlingDisabled() const {
|
| - if (client_)
|
| - return client_->BrowserCompositorViewShouldAckImmediately();
|
| + if (view_)
|
| + return view_->client()->BrowserCompositorViewShouldAckImmediately();
|
| return false;
|
| }
|
|
|
| @@ -140,8 +140,8 @@ void BrowserCompositorCALayerTreeMac::GotAcceleratedFrame(
|
| accelerated_latency_info_.insert(accelerated_latency_info_.end(),
|
| latency_info.begin(), latency_info.end());
|
|
|
| - // If there is no client and therefore no superview to draw into, early-out.
|
| - if (!client_) {
|
| + // If there is no view and therefore no superview to draw into, early-out.
|
| + if (!view_) {
|
| IOSurfaceLayerDidDrawFrame();
|
| return;
|
| }
|
| @@ -274,7 +274,7 @@ void BrowserCompositorCALayerTreeMac::GotSoftwareFrame(
|
| cc::SoftwareFrameData* frame_data,
|
| float scale_factor,
|
| SkCanvas* canvas) {
|
| - if (!frame_data || !canvas || !client_)
|
| + if (!frame_data || !canvas || !view_)
|
| return;
|
|
|
| // Disable the fade-in or fade-out effect if we create or remove layers.
|
| @@ -330,11 +330,11 @@ void BrowserCompositorCALayerTreeMac::DestroySoftwareLayer() {
|
|
|
| bool BrowserCompositorCALayerTreeMac::IOSurfaceLayerShouldAckImmediately()
|
| const {
|
| - // If there is no client then the accelerated layer is not in the hierarchy
|
| + // If there is no view then the accelerated layer is not in the hierarchy
|
| // and will never draw.
|
| - if (!client_)
|
| + if (!view_)
|
| return true;
|
| - return client_->BrowserCompositorViewShouldAckImmediately();
|
| + return view_->client()->BrowserCompositorViewShouldAckImmediately();
|
| }
|
|
|
| void BrowserCompositorCALayerTreeMac::IOSurfaceLayerDidDrawFrame() {
|
| @@ -344,8 +344,10 @@ void BrowserCompositorCALayerTreeMac::IOSurfaceLayerDidDrawFrame() {
|
| accelerated_output_surface_id_ = 0;
|
| }
|
|
|
| - if (client_)
|
| - client_->BrowserCompositorViewFrameSwapped(accelerated_latency_info_);
|
| + if (view_) {
|
| + view_->client()->BrowserCompositorViewFrameSwapped(
|
| + accelerated_latency_info_);
|
| + }
|
|
|
| accelerated_latency_info_.clear();
|
| }
|
| @@ -373,4 +375,32 @@ BrowserCompositorCALayerTreeMac* BrowserCompositorCALayerTreeMac::
|
| return found->second;
|
| }
|
|
|
| +void BrowserCompositorCALayerTreeMacGotAcceleratedFrame(
|
| + gfx::AcceleratedWidget widget,
|
| + uint64 surface_handle, int surface_id,
|
| + const std::vector<ui::LatencyInfo>& latency_info,
|
| + gfx::Size pixel_size, float scale_factor,
|
| + bool* disable_throttling, int* renderer_id) {
|
| + BrowserCompositorCALayerTreeMac* ca_layer_tree =
|
| + BrowserCompositorCALayerTreeMac::FromAcceleratedWidget(widget);
|
| + if (ca_layer_tree) {
|
| + ca_layer_tree->GotAcceleratedFrame(
|
| + surface_handle, surface_id, latency_info, pixel_size, scale_factor);
|
| + *disable_throttling = ca_layer_tree->IsRendererThrottlingDisabled();
|
| + *renderer_id = ca_layer_tree->GetRendererID();
|
| + } else {
|
| + *disable_throttling = false;
|
| + *renderer_id = 0;
|
| + }
|
| +}
|
| +
|
| +void BrowserCompositorCALayerTreeMacGotSoftwareFrame(
|
| + gfx::AcceleratedWidget widget,
|
| + cc::SoftwareFrameData* frame_data, float scale_factor, SkCanvas* canvas) {
|
| + BrowserCompositorCALayerTreeMac* ca_layer_tree =
|
| + BrowserCompositorCALayerTreeMac::FromAcceleratedWidget(widget);
|
| + if (ca_layer_tree)
|
| + ca_layer_tree->GotSoftwareFrame(frame_data, scale_factor, canvas);
|
| +}
|
| +
|
| } // namespace content
|
|
|