Chromium Code Reviews| Index: cc/output/output_surface.cc |
| diff --git a/cc/output/output_surface.cc b/cc/output/output_surface.cc |
| index bb1302ce81967e18799b8ccec9cf6a41c93061bb..f7b21ff0b886308bbc8061b598653aad0469399d 100644 |
| --- a/cc/output/output_surface.cc |
| +++ b/cc/output/output_surface.cc |
| @@ -122,14 +122,14 @@ class SkiaGpuTraceMemoryDump : public SkTraceMemoryDump { |
| OutputSurface::OutputSurface(scoped_refptr<ContextProvider> context_provider) |
| : context_provider_(std::move(context_provider)), weak_ptr_factory_(this) { |
| DCHECK(context_provider_); |
| - client_thread_checker_.DetachFromThread(); |
| + thread_checker_.DetachFromThread(); |
| } |
| OutputSurface::OutputSurface( |
| std::unique_ptr<SoftwareOutputDevice> software_device) |
| : software_device_(std::move(software_device)), weak_ptr_factory_(this) { |
| DCHECK(software_device_); |
| - client_thread_checker_.DetachFromThread(); |
| + thread_checker_.DetachFromThread(); |
| } |
| OutputSurface::OutputSurface( |
| @@ -137,33 +137,41 @@ OutputSurface::OutputSurface( |
| : vulkan_context_provider_(vulkan_context_provider), |
| weak_ptr_factory_(this) { |
| DCHECK(vulkan_context_provider_); |
| - client_thread_checker_.DetachFromThread(); |
| + thread_checker_.DetachFromThread(); |
| } |
| OutputSurface::~OutputSurface() { |
| - if (client_) |
| - DetachFromClientInternal(); |
| -} |
| + // Is destroyed on the thread it is bound to. |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| -bool OutputSurface::HasExternalStencilTest() const { |
| - return false; |
| -} |
| + if (!client_) |
| + return; |
| + |
| + // Unregister any dump provider. Safe to call (no-op) if we have not yet |
| + // registered. |
| + if (base::ThreadTaskRunnerHandle::IsSet()) { |
| + base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( |
| + this); |
| + } |
| -void OutputSurface::ApplyExternalStencil() {} |
| + if (context_provider_) { |
| + context_provider_->SetLostContextCallback( |
| + ContextProvider::LostContextCallback()); |
| + } |
| +} |
| bool OutputSurface::BindToClient(OutputSurfaceClient* client) { |
| - DCHECK(client_thread_checker_.CalledOnValidThread()); |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| DCHECK(client); |
| DCHECK(!client_); |
| client_ = client; |
| - bool success = true; |
| - if (context_provider_.get()) { |
| - success = context_provider_->BindToCurrentThread(); |
| - if (success) { |
| - context_provider_->SetLostContextCallback(base::Bind( |
| - &OutputSurface::DidLoseOutputSurface, base::Unretained(this))); |
| - } |
| + if (context_provider_) { |
| + if (!context_provider_->BindToCurrentThread()) |
| + return false; |
| + |
| + context_provider_->SetLostContextCallback(base::Bind( |
| + &OutputSurface::DidLoseOutputSurface, base::Unretained(this))); |
| } |
| // In certain cases, ThreadTaskRunnerHandle isn't set (Android Webview). |
| @@ -176,26 +184,7 @@ bool OutputSurface::BindToClient(OutputSurfaceClient* client) { |
| base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( |
| this, "OutputSurface", base::ThreadTaskRunnerHandle::Get()); |
| } |
| - |
| - if (!success) |
| - DetachFromClient(); |
| - return success; |
| -} |
| - |
| -void OutputSurface::DetachFromClient() { |
| - DetachFromClientInternal(); |
| -} |
| - |
| -void OutputSurface::EnsureBackbuffer() { |
| - if (software_device_) |
|
enne (OOO)
2016/09/24 00:52:34
Seeing all these conditionals get moved to child c
|
| - software_device_->EnsureBackbuffer(); |
| -} |
| - |
| -void OutputSurface::DiscardBackbuffer() { |
| - if (context_provider_.get()) |
| - context_provider_->ContextGL()->DiscardBackbufferCHROMIUM(); |
| - if (software_device_) |
| - software_device_->DiscardBackbuffer(); |
| + return true; |
| } |
| void OutputSurface::Reshape(const gfx::Size& size, |
| @@ -218,11 +207,6 @@ void OutputSurface::Reshape(const gfx::Size& size, |
| software_device_->Resize(size, scale_factor); |
| } |
| -void OutputSurface::BindFramebuffer() { |
| - DCHECK(context_provider_.get()); |
| - context_provider_->ContextGL()->BindFramebuffer(GL_FRAMEBUFFER, 0); |
| -} |
| - |
| void OutputSurface::PostSwapBuffersComplete() { |
| base::ThreadTaskRunnerHandle::Get()->PostTask( |
| FROM_HERE, base::Bind(&OutputSurface::OnSwapBuffersComplete, |
| @@ -235,27 +219,6 @@ void OutputSurface::OnSwapBuffersComplete() { |
| client_->DidSwapBuffersComplete(); |
| } |
| -void OutputSurface::DidReceiveTextureInUseResponses( |
| - const gpu::TextureInUseResponses& responses) { |
| - client_->DidReceiveTextureInUseResponses(responses); |
| -} |
| - |
| -OverlayCandidateValidator* OutputSurface::GetOverlayCandidateValidator() const { |
| - return nullptr; |
| -} |
| - |
| -bool OutputSurface::IsDisplayedAsOverlayPlane() const { |
| - return false; |
| -} |
| - |
| -unsigned OutputSurface::GetOverlayTextureId() const { |
| - return 0; |
| -} |
| - |
| -bool OutputSurface::SurfaceIsSuspendForRecycle() const { |
| - return false; |
| -} |
| - |
| bool OutputSurface::OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, |
| base::trace_event::ProcessMemoryDump* pmd) { |
| if (auto* context_provider = this->context_provider()) { |
| @@ -269,24 +232,6 @@ bool OutputSurface::OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, |
| return true; |
| } |
| -void OutputSurface::DetachFromClientInternal() { |
| - DCHECK(client_thread_checker_.CalledOnValidThread()); |
| - DCHECK(client_); |
| - |
| - // Unregister any dump provider. Safe to call (no-op) if we have not yet |
| - // registered. |
| - base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( |
| - this); |
| - |
| - if (context_provider_.get()) { |
| - context_provider_->SetLostContextCallback( |
| - ContextProvider::LostContextCallback()); |
| - } |
| - context_provider_ = nullptr; |
| - client_ = nullptr; |
| - weak_ptr_factory_.InvalidateWeakPtrs(); |
| -} |
| - |
| void OutputSurface::DidLoseOutputSurface() { |
| TRACE_EVENT0("cc", "OutputSurface::DidLoseOutputSurface"); |
| client_->DidLoseOutputSurface(); |