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

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

Issue 2402173002: cc: Get rid of PostSwapBuffersComplete. (Closed)
Patch Set: postswap: fix-blimp-unittest-post-swap-acks 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
« no previous file with comments | « content/browser/compositor/vulkan_browser_compositor_output_surface.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 718dd4e8f3645317926b702595cb1abd81aaa9ce..2331cd52734df0865197abcac1d87437ab97e81f 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -319,8 +319,11 @@ class AndroidOutputSurface : public cc::OutputSurface {
class VulkanOutputSurface : public cc::OutputSurface {
public:
explicit VulkanOutputSurface(
- scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider)
- : OutputSurface(std::move(vulkan_context_provider)) {}
+ scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider,
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+ : OutputSurface(std::move(vulkan_context_provider)),
+ task_runner_(std::move(task_runner)),
+ weak_ptr_factory_(this) {}
~VulkanOutputSurface() override { Destroy(); }
@@ -345,7 +348,9 @@ class VulkanOutputSurface : public cc::OutputSurface {
void SwapBuffers(cc::CompositorFrame frame) override {
surface_->SwapBuffers();
- PostSwapBuffersComplete();
+ task_runner_->PostTask(FROM_HERE,
+ base::Bind(&VulkanOutputSurface::SwapBuffersCallback,
+ weak_ptr_factory_.GetWeakPtr()));
}
void Destroy() {
@@ -355,14 +360,14 @@ class VulkanOutputSurface : public cc::OutputSurface {
}
}
- void OnSwapBuffersCompleted(const std::vector<ui::LatencyInfo>& latency_info,
- gfx::SwapResult result) {
- RenderWidgetHostImpl::CompositorFrameDrawn(latency_info);
- OutputSurface::OnSwapBuffersComplete();
+ private:
+ void OutputSurface::SwapBuffersCallback() {
+ client_->DidSwapBuffersComplete();
}
- private:
std::unique_ptr<gpu::VulkanSurface> surface_;
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ base::WeakPtrFactory<VulkanOutputSurface> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(VulkanOutputSurface);
};
@@ -649,8 +654,8 @@ void CompositorImpl::CreateVulkanOutputSurface() {
if (!vulkan_context_provider)
return;
- auto vulkan_surface =
- base::MakeUnique<VulkanOutputSurface>(vulkan_context_provider);
+ auto vulkan_surface = base::MakeUnique<VulkanOutputSurface>(
+ vulkan_context_provider, base::ThreadTaskRunnerHandle::Get());
if (!vulkan_surface->Initialize(window_))
return;
« no previous file with comments | « content/browser/compositor/vulkan_browser_compositor_output_surface.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698