| Index: content/browser/compositor/gpu_browser_compositor_output_surface.cc
|
| diff --git a/content/browser/compositor/gpu_browser_compositor_output_surface.cc b/content/browser/compositor/gpu_browser_compositor_output_surface.cc
|
| index 73ca19860b1c68d1c50dcc3ade78800af11aa09f..b186d6910d4164cf9be43dd08037cdea1aef31fa 100644
|
| --- a/content/browser/compositor/gpu_browser_compositor_output_surface.cc
|
| +++ b/content/browser/compositor/gpu_browser_compositor_output_surface.cc
|
| @@ -30,24 +30,17 @@ GpuBrowserCompositorOutputSurface::GpuBrowserCompositorOutputSurface(
|
| std::move(vsync_manager),
|
| begin_frame_source,
|
| std::move(overlay_candidate_validator)),
|
| - swap_buffers_completion_callback_(base::Bind(
|
| - &GpuBrowserCompositorOutputSurface::OnGpuSwapBuffersCompleted,
|
| - base::Unretained(this))),
|
| - update_vsync_parameters_callback_(base::Bind(
|
| - &BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu,
|
| - base::Unretained(this))) {}
|
| + weak_ptr_factory_(this) {}
|
|
|
| -GpuBrowserCompositorOutputSurface::~GpuBrowserCompositorOutputSurface() {}
|
| +GpuBrowserCompositorOutputSurface::~GpuBrowserCompositorOutputSurface() =
|
| + default;
|
|
|
| -gpu::CommandBufferProxyImpl*
|
| -GpuBrowserCompositorOutputSurface::GetCommandBufferProxy() {
|
| - ContextProviderCommandBuffer* provider_command_buffer =
|
| - static_cast<content::ContextProviderCommandBuffer*>(
|
| - context_provider_.get());
|
| - gpu::CommandBufferProxyImpl* command_buffer_proxy =
|
| - provider_command_buffer->GetCommandBufferProxy();
|
| - DCHECK(command_buffer_proxy);
|
| - return command_buffer_proxy;
|
| +void GpuBrowserCompositorOutputSurface::OnGpuSwapBuffersCompleted(
|
| + const std::vector<ui::LatencyInfo>& latency_info,
|
| + gfx::SwapResult result,
|
| + const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac) {
|
| + RenderWidgetHostImpl::CompositorFrameDrawn(latency_info);
|
| + client_->DidSwapBuffersComplete();
|
| }
|
|
|
| void GpuBrowserCompositorOutputSurface::OnReflectorChanged() {
|
| @@ -64,14 +57,17 @@ bool GpuBrowserCompositorOutputSurface::BindToClient(
|
| if (!BrowserCompositorOutputSurface::BindToClient(client))
|
| return false;
|
|
|
| - GetCommandBufferProxy()->SetSwapBuffersCompletionCallback(
|
| - swap_buffers_completion_callback_.callback());
|
| - GetCommandBufferProxy()->SetUpdateVSyncParametersCallback(
|
| - update_vsync_parameters_callback_.callback());
|
| if (capabilities_.uses_default_gl_framebuffer) {
|
| capabilities_.flipped_output_surface =
|
| context_provider()->ContextCapabilities().flips_vertically;
|
| }
|
| +
|
| + GetCommandBufferProxy()->SetSwapBuffersCompletionCallback(
|
| + base::Bind(&GpuBrowserCompositorOutputSurface::OnGpuSwapBuffersCompleted,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| + GetCommandBufferProxy()->SetUpdateVSyncParametersCallback(base::Bind(
|
| + &GpuBrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| return true;
|
| }
|
|
|
| @@ -124,17 +120,20 @@ bool GpuBrowserCompositorOutputSurface::SurfaceIsSuspendForRecycle() const {
|
| return false;
|
| }
|
|
|
| -void GpuBrowserCompositorOutputSurface::OnGpuSwapBuffersCompleted(
|
| - const std::vector<ui::LatencyInfo>& latency_info,
|
| - gfx::SwapResult result,
|
| - const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac) {
|
| - RenderWidgetHostImpl::CompositorFrameDrawn(latency_info);
|
| - client_->DidSwapBuffersComplete();
|
| -}
|
| -
|
| #if defined(OS_MACOSX)
|
| void GpuBrowserCompositorOutputSurface::SetSurfaceSuspendedForRecycle(
|
| bool suspended) {}
|
| #endif
|
|
|
| +gpu::CommandBufferProxyImpl*
|
| +GpuBrowserCompositorOutputSurface::GetCommandBufferProxy() {
|
| + ContextProviderCommandBuffer* provider_command_buffer =
|
| + static_cast<content::ContextProviderCommandBuffer*>(
|
| + context_provider_.get());
|
| + gpu::CommandBufferProxyImpl* command_buffer_proxy =
|
| + provider_command_buffer->GetCommandBufferProxy();
|
| + DCHECK(command_buffer_proxy);
|
| + return command_buffer_proxy;
|
| +}
|
| +
|
| } // namespace content
|
|
|