| 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 544849c7a630f63c1efff8dd45ddb03f056b99df..42a9a85ad69b2afb84f1f189a734626127c00e63 100644
|
| --- a/content/browser/renderer_host/compositor_impl_android.cc
|
| +++ b/content/browser/renderer_host/compositor_impl_android.cc
|
| @@ -311,8 +311,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(); }
|
|
|
| @@ -337,7 +340,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() {
|
| @@ -347,14 +352,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);
|
| };
|
| @@ -641,8 +646,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;
|
|
|
|
|