Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Unified Diff: content/browser/renderer_host/compositor_impl_android.cc

Issue 2443003004: cc: Make OutputSurface::BindToClient pure virtual and not return bool (Closed)
Patch Set: bindtoclient-pure-virtual: rebase Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
« no previous file with comments | « content/browser/renderer_host/compositor_impl_android.h ('k') | content/renderer/android/synchronous_compositor_frame_sink.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698