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

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

Issue 2716193002: android: Add draw completion for CompositorView (Closed)
Patch Set: fix x86 Created 3 years, 9 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 0b24d8730da65bbc7d1303c43ff393db2eaabe62..032239f506d355024d1abcbbaaac0c30bc45ea85 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -208,9 +208,11 @@ void CreateContextProviderAfterGpuChannelEstablished(
class AndroidOutputSurface : public cc::OutputSurface {
public:
- explicit AndroidOutputSurface(
- scoped_refptr<ui::ContextProviderCommandBuffer> context_provider)
+ AndroidOutputSurface(
+ scoped_refptr<ui::ContextProviderCommandBuffer> context_provider,
+ base::Closure swap_buffers_callback)
: cc::OutputSurface(std::move(context_provider)),
+ swap_buffers_callback_(std::move(swap_buffers_callback)),
overlay_candidate_validator_(
new display_compositor::
CompositorOverlayCandidateValidatorAndroid()),
@@ -292,10 +294,12 @@ class AndroidOutputSurface : public cc::OutputSurface {
const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac) {
RenderWidgetHostImpl::CompositorFrameDrawn(latency_info);
client_->DidReceiveSwapBuffersAck();
+ swap_buffers_callback_.Run();
}
private:
cc::OutputSurfaceClient* client_ = nullptr;
+ base::Closure swap_buffers_callback_;
std::unique_ptr<cc::OverlayCandidateValidator> overlay_candidate_validator_;
base::WeakPtrFactory<AndroidOutputSurface> weak_ptr_factory_;
};
@@ -718,8 +722,10 @@ void CompositorImpl::OnGpuChannelEstablished(
HandlePendingCompositorFrameSinkRequest();
}
- auto display_output_surface =
- base::MakeUnique<AndroidOutputSurface>(context_provider);
+ // Unretained is safe this owns cc::Display which owns OutputSurface.
+ auto display_output_surface = base::MakeUnique<AndroidOutputSurface>(
+ context_provider,
+ base::Bind(&CompositorImpl::DidSwapBuffers, base::Unretained(this)));
InitializeDisplay(std::move(display_output_surface), nullptr,
std::move(context_provider));
}
@@ -767,6 +773,10 @@ void CompositorImpl::InitializeDisplay(
host_->SetCompositorFrameSink(std::move(compositor_frame_sink));
}
+void CompositorImpl::DidSwapBuffers() {
+ client_->DidSwapBuffers();
+}
+
cc::UIResourceId CompositorImpl::CreateUIResource(
cc::UIResourceClient* client) {
TRACE_EVENT0("compositor", "CompositorImpl::CreateUIResource");
« no previous file with comments | « content/browser/renderer_host/compositor_impl_android.h ('k') | content/public/browser/android/compositor_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698