Index: cc/output/output_surface.cc |
diff --git a/cc/output/output_surface.cc b/cc/output/output_surface.cc |
deleted file mode 100644 |
index 630019e61ecbb58f0ec0ca378cca740bb906417e..0000000000000000000000000000000000000000 |
--- a/cc/output/output_surface.cc |
+++ /dev/null |
@@ -1,250 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "cc/output/output_surface.h" |
- |
-#include "base/bind.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/trace_event/trace_event.h" |
-#include "cc/output/output_surface_client.h" |
-#include "gpu/GLES2/gl2extchromium.h" |
-#include "gpu/command_buffer/client/gles2_interface.h" |
-#include "ui/gfx/geometry/rect.h" |
-#include "ui/gfx/geometry/size.h" |
- |
- |
-namespace cc { |
- |
-OutputSurface::OutputSurface( |
- const scoped_refptr<ContextProvider>& context_provider, |
- const scoped_refptr<ContextProvider>& worker_context_provider, |
- scoped_ptr<SoftwareOutputDevice> software_device) |
- : client_(NULL), |
- context_provider_(context_provider), |
- worker_context_provider_(worker_context_provider), |
- software_device_(software_device.Pass()), |
- device_scale_factor_(-1), |
- external_stencil_test_enabled_(false), |
- weak_ptr_factory_(this) { |
-} |
- |
-OutputSurface::OutputSurface( |
- const scoped_refptr<ContextProvider>& context_provider) |
- : OutputSurface(context_provider, nullptr, nullptr) { |
-} |
- |
-OutputSurface::OutputSurface( |
- const scoped_refptr<ContextProvider>& context_provider, |
- const scoped_refptr<ContextProvider>& worker_context_provider) |
- : OutputSurface(context_provider, worker_context_provider, nullptr) { |
-} |
- |
-OutputSurface::OutputSurface(scoped_ptr<SoftwareOutputDevice> software_device) |
- : OutputSurface(nullptr, nullptr, software_device.Pass()) { |
-} |
- |
-OutputSurface::OutputSurface( |
- const scoped_refptr<ContextProvider>& context_provider, |
- scoped_ptr<SoftwareOutputDevice> software_device) |
- : OutputSurface(context_provider, nullptr, software_device.Pass()) { |
-} |
- |
-void OutputSurface::CommitVSyncParameters(base::TimeTicks timebase, |
- base::TimeDelta interval) { |
- TRACE_EVENT2("cc", |
- "OutputSurface::CommitVSyncParameters", |
- "timebase", |
- (timebase - base::TimeTicks()).InSecondsF(), |
- "interval", |
- interval.InSecondsF()); |
- client_->CommitVSyncParameters(timebase, interval); |
-} |
- |
-// Forwarded to OutputSurfaceClient |
-void OutputSurface::SetNeedsRedrawRect(const gfx::Rect& damage_rect) { |
- TRACE_EVENT0("cc", "OutputSurface::SetNeedsRedrawRect"); |
- client_->SetNeedsRedrawRect(damage_rect); |
-} |
- |
-void OutputSurface::ReclaimResources(const CompositorFrameAck* ack) { |
- client_->ReclaimResources(ack); |
-} |
- |
-void OutputSurface::DidLoseOutputSurface() { |
- TRACE_EVENT0("cc", "OutputSurface::DidLoseOutputSurface"); |
- client_->DidLoseOutputSurface(); |
-} |
- |
-void OutputSurface::SetExternalStencilTest(bool enabled) { |
- external_stencil_test_enabled_ = enabled; |
-} |
- |
-void OutputSurface::SetExternalDrawConstraints( |
- const gfx::Transform& transform, |
- const gfx::Rect& viewport, |
- const gfx::Rect& clip, |
- const gfx::Rect& viewport_rect_for_tile_priority, |
- const gfx::Transform& transform_for_tile_priority, |
- bool resourceless_software_draw) { |
- client_->SetExternalDrawConstraints(transform, |
- viewport, |
- clip, |
- viewport_rect_for_tile_priority, |
- transform_for_tile_priority, |
- resourceless_software_draw); |
-} |
- |
-OutputSurface::~OutputSurface() { |
- ResetContext3d(); |
-} |
- |
-bool OutputSurface::HasExternalStencilTest() const { |
- return external_stencil_test_enabled_; |
-} |
- |
-bool OutputSurface::BindToClient(OutputSurfaceClient* client) { |
- DCHECK(client); |
- client_ = client; |
- bool success = true; |
- |
- if (context_provider_.get()) { |
- success = context_provider_->BindToCurrentThread(); |
- if (success) |
- SetUpContext3d(); |
- } |
- |
- if (success && worker_context_provider_.get()) { |
- success = worker_context_provider_->BindToCurrentThread(); |
- if (success) { |
- worker_context_provider_->SetupLock(); |
- // The destructor resets the context lost callback, so base::Unretained |
- // is safe, as long as the worker threads stop using the context before |
- // the output surface is destroyed. |
- worker_context_provider_->SetLostContextCallback(base::Bind( |
- &OutputSurface::DidLoseOutputSurface, base::Unretained(this))); |
- } |
- } |
- |
- if (!success) |
- client_ = NULL; |
- |
- return success; |
-} |
- |
-bool OutputSurface::InitializeAndSetContext3d( |
- scoped_refptr<ContextProvider> context_provider, |
- scoped_refptr<ContextProvider> worker_context_provider) { |
- DCHECK(!context_provider_.get()); |
- DCHECK(context_provider.get()); |
- DCHECK(client_); |
- |
- bool success = context_provider->BindToCurrentThread(); |
- if (success) { |
- context_provider_ = context_provider; |
- SetUpContext3d(); |
- } |
- if (success && worker_context_provider.get()) { |
- success = worker_context_provider->BindToCurrentThread(); |
- if (success) { |
- worker_context_provider_ = worker_context_provider; |
- // The destructor resets the context lost callback, so base::Unretained |
- // is safe, as long as the worker threads stop using the context before |
- // the output surface is destroyed. |
- worker_context_provider_->SetLostContextCallback(base::Bind( |
- &OutputSurface::DidLoseOutputSurface, base::Unretained(this))); |
- } |
- } |
- |
- if (!success) |
- ResetContext3d(); |
- else |
- client_->DeferredInitialize(); |
- |
- return success; |
-} |
- |
-void OutputSurface::ReleaseGL() { |
- DCHECK(client_); |
- DCHECK(context_provider_.get()); |
- client_->ReleaseGL(); |
- DCHECK(!context_provider_.get()); |
-} |
- |
-void OutputSurface::SetUpContext3d() { |
- DCHECK(context_provider_.get()); |
- DCHECK(client_); |
- |
- context_provider_->SetLostContextCallback( |
- base::Bind(&OutputSurface::DidLoseOutputSurface, |
- base::Unretained(this))); |
-} |
- |
-void OutputSurface::ReleaseContextProvider() { |
- DCHECK(client_); |
- DCHECK(context_provider_.get()); |
- ResetContext3d(); |
-} |
- |
-void OutputSurface::ResetContext3d() { |
- if (context_provider_.get()) { |
- context_provider_->SetLostContextCallback( |
- ContextProvider::LostContextCallback()); |
- } |
- if (worker_context_provider_.get()) { |
- worker_context_provider_->SetLostContextCallback( |
- ContextProvider::LostContextCallback()); |
- } |
- context_provider_ = NULL; |
- worker_context_provider_ = NULL; |
-} |
- |
-void OutputSurface::EnsureBackbuffer() { |
- if (software_device_) |
- software_device_->EnsureBackbuffer(); |
-} |
- |
-void OutputSurface::DiscardBackbuffer() { |
- if (context_provider_.get()) |
- context_provider_->ContextGL()->DiscardBackbufferCHROMIUM(); |
- if (software_device_) |
- software_device_->DiscardBackbuffer(); |
-} |
- |
-void OutputSurface::Reshape(const gfx::Size& size, float scale_factor) { |
- if (size == surface_size_ && scale_factor == device_scale_factor_) |
- return; |
- |
- surface_size_ = size; |
- device_scale_factor_ = scale_factor; |
- if (context_provider_.get()) { |
- context_provider_->ContextGL()->ResizeCHROMIUM( |
- size.width(), size.height(), scale_factor); |
- } |
- if (software_device_) |
- software_device_->Resize(size, scale_factor); |
-} |
- |
-gfx::Size OutputSurface::SurfaceSize() const { |
- return surface_size_; |
-} |
- |
-void OutputSurface::BindFramebuffer() { |
- DCHECK(context_provider_.get()); |
- context_provider_->ContextGL()->BindFramebuffer(GL_FRAMEBUFFER, 0); |
-} |
- |
-void OutputSurface::PostSwapBuffersComplete() { |
- base::MessageLoop::current()->PostTask( |
- FROM_HERE, |
- base::Bind(&OutputSurface::OnSwapBuffersComplete, |
- weak_ptr_factory_.GetWeakPtr())); |
-} |
- |
-// We don't post tasks bound to the client directly since they might run |
-// after the OutputSurface has been destroyed. |
-void OutputSurface::OnSwapBuffersComplete() { |
- client_->DidSwapBuffersComplete(); |
-} |
- |
-} // namespace cc |