| Index: content/browser/renderer_host/compositor_impl_android.cc
|
| diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc
|
| index a8c57db192d8e3b8339e29811b4da3304c541210..c8363d6ea7311231d52b4ca09fa01948f58e8953 100644
|
| --- a/content/browser/renderer_host/compositor_impl_android.cc
|
| +++ b/content/browser/renderer_host/compositor_impl_android.cc
|
| @@ -14,7 +14,6 @@
|
| #include "base/android/scoped_java_ref.h"
|
| #include "base/auto_reset.h"
|
| #include "base/bind.h"
|
| -#include "base/cancelable_callback.h"
|
| #include "base/command_line.h"
|
| #include "base/containers/hash_tables.h"
|
| #include "base/lazy_instance.h"
|
| @@ -213,18 +212,13 @@ void ExternalBeginFrameSource::OnVSync(base::TimeTicks frame_time,
|
|
|
| class AndroidOutputSurface : public cc::OutputSurface {
|
| public:
|
| - AndroidOutputSurface(
|
| - scoped_refptr<ContextProviderCommandBuffer> context_provider,
|
| - const base::Callback<void(gpu::Capabilities)>&
|
| - populate_gpu_capabilities_callback)
|
| + explicit AndroidOutputSurface(
|
| + scoped_refptr<ContextProviderCommandBuffer> context_provider)
|
| : cc::OutputSurface(std::move(context_provider)),
|
| - populate_gpu_capabilities_callback_(populate_gpu_capabilities_callback),
|
| - swap_buffers_completion_callback_(
|
| - base::Bind(&AndroidOutputSurface::OnSwapBuffersCompleted,
|
| - base::Unretained(this))),
|
| overlay_candidate_validator_(
|
| new display_compositor::
|
| - CompositorOverlayCandidateValidatorAndroid()) {
|
| + CompositorOverlayCandidateValidatorAndroid()),
|
| + weak_ptr_factory_(this) {
|
| capabilities_.max_frames_pending = kMaxDisplaySwapBuffers;
|
| }
|
|
|
| @@ -240,16 +234,13 @@ class AndroidOutputSurface : public cc::OutputSurface {
|
| }
|
| }
|
|
|
| - bool BindToClient(cc::OutputSurfaceClient* client) override {
|
| - if (!OutputSurface::BindToClient(client))
|
| - return false;
|
| -
|
| + void BindToClient(cc::OutputSurfaceClient* client) override {
|
| + DCHECK(client);
|
| + DCHECK(!client_);
|
| + client_ = client;
|
| GetCommandBufferProxy()->SetSwapBuffersCompletionCallback(
|
| - swap_buffers_completion_callback_.callback());
|
| -
|
| - populate_gpu_capabilities_callback_.Run(
|
| - context_provider_->ContextCapabilities());
|
| - return true;
|
| + base::Bind(&AndroidOutputSurface::OnSwapBuffersCompleted,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| void EnsureBackbuffer() override {}
|
| @@ -305,13 +296,9 @@ class AndroidOutputSurface : public cc::OutputSurface {
|
| }
|
|
|
| private:
|
| - base::Callback<void(gpu::Capabilities)> populate_gpu_capabilities_callback_;
|
| - base::CancelableCallback<void(
|
| - const std::vector<ui::LatencyInfo>&,
|
| - gfx::SwapResult,
|
| - const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac)>
|
| - swap_buffers_completion_callback_;
|
| + cc::OutputSurfaceClient* client_ = nullptr;
|
| std::unique_ptr<cc::OverlayCandidateValidator> overlay_candidate_validator_;
|
| + base::WeakPtrFactory<AndroidOutputSurface> weak_ptr_factory_;
|
| };
|
|
|
| #if defined(ENABLE_VULKAN)
|
| @@ -699,10 +686,12 @@ void CompositorImpl::OnGpuChannelEstablished(
|
| context_provider_command_buffer =
|
| static_cast<ContextProviderCommandBuffer*>(
|
| context_provider.get());
|
| + context_provider_command_buffer->BindToCurrentThread();
|
| + gpu_capabilities_ =
|
| + context_provider_command_buffer->ContextCapabilities();
|
| +
|
| auto display_output_surface = base::MakeUnique<AndroidOutputSurface>(
|
| - context_provider_command_buffer,
|
| - base::Bind(&CompositorImpl::PopulateGpuCapabilities,
|
| - base::Unretained(this)));
|
| + std::move(context_provider_command_buffer));
|
| InitializeDisplay(std::move(display_output_surface), nullptr,
|
| std::move(context_provider));
|
| break;
|
| @@ -746,11 +735,6 @@ void CompositorImpl::InitializeDisplay(
|
| host_->SetCompositorFrameSink(std::move(compositor_frame_sink));
|
| }
|
|
|
| -void CompositorImpl::PopulateGpuCapabilities(
|
| - gpu::Capabilities gpu_capabilities) {
|
| - gpu_capabilities_ = gpu_capabilities;
|
| -}
|
| -
|
| void CompositorImpl::AddObserver(VSyncObserver* observer) {
|
| observer_list_.AddObserver(observer);
|
| }
|
|
|