Chromium Code Reviews| Index: ui/compositor/compositor.cc |
| diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc |
| index 31f47c7d0a715531384d08827ba91eb8d4f5517e..0402fdd52bb03b22f638a3f10aa0cd6fa3c976cb 100644 |
| --- a/ui/compositor/compositor.cc |
| +++ b/ui/compositor/compositor.cc |
| @@ -63,6 +63,43 @@ void ContextFactory::SetInstance(ContextFactory* instance) { |
| g_context_factory = instance; |
| } |
| +// Adapts a pure WebGraphicsContext3D into a WebCompositorOutputSurface. |
|
jonathan.backer
2012/10/26 20:31:03
Feels like this should have been in an anon namesp
ajuma
2012/10/29 17:02:26
Done.
|
| +class WebGraphicsContextToOutputSurfaceAdapter : |
| + public WebKit::WebCompositorOutputSurface { |
| +public: |
| + explicit WebGraphicsContextToOutputSurfaceAdapter( |
| + WebKit::WebGraphicsContext3D* context) |
| + : context3D_(context) |
| + , client_(NULL) { |
| + } |
| + |
| + virtual bool bindToClient( |
| + WebKit::WebCompositorOutputSurfaceClient* client) OVERRIDE { |
| + DCHECK(client); |
| + if (!context3D_->makeContextCurrent()) |
| + return false; |
| + client_ = client; |
| + return true; |
| + } |
| + |
| + virtual const Capabilities& capabilities() const OVERRIDE { |
| + return capabilities_; |
| + } |
| + |
| + virtual WebKit::WebGraphicsContext3D* context3D() const OVERRIDE { |
| + return context3D_.get(); |
| + } |
| + |
| + virtual void sendFrameToParentCompositor( |
| + const WebKit::WebCompositorFrame&) OVERRIDE { |
| + } |
| + |
| +private: |
| + scoped_ptr<WebKit::WebGraphicsContext3D> context3D_; |
| + Capabilities capabilities_; |
| + WebKit::WebCompositorOutputSurfaceClient* client_; |
| +}; |
| + |
| DefaultContextFactory::DefaultContextFactory() { |
| } |
| @@ -87,6 +124,12 @@ WebKit::WebGraphicsContext3D* DefaultContextFactory::CreateContext( |
| return CreateContextCommon(compositor, false); |
| } |
| +WebKit::WebCompositorOutputSurface* DefaultContextFactory::CreateOutputSurface( |
| + Compositor* compositor) { |
| + return new WebGraphicsContextToOutputSurfaceAdapter( |
| + CreateContext(compositor)); |
| +} |
| + |
| WebKit::WebGraphicsContext3D* DefaultContextFactory::CreateOffscreenContext() { |
| return CreateContextCommon(NULL, true); |
| } |
| @@ -327,48 +370,6 @@ void Compositor::applyScrollAndScale(const WebKit::WebSize& scrollDelta, |
| float scaleFactor) { |
| } |
| -// Adapts a pure WebGraphicsContext3D into a WebCompositorOutputSurface. |
| -class WebGraphicsContextToOutputSurfaceAdapter : |
| - public WebKit::WebCompositorOutputSurface { |
| -public: |
| - explicit WebGraphicsContextToOutputSurfaceAdapter( |
| - WebKit::WebGraphicsContext3D* context) |
| - : m_context3D(context) |
| - , m_client(0) |
| - { |
| - } |
| - |
| - virtual bool bindToClient( |
| - WebKit::WebCompositorOutputSurfaceClient* client) OVERRIDE |
| - { |
| - DCHECK(client); |
| - if (!m_context3D->makeContextCurrent()) |
| - return false; |
| - m_client = client; |
| - return true; |
| - } |
| - |
| - virtual const Capabilities& capabilities() const OVERRIDE |
| - { |
| - return m_capabilities; |
| - } |
| - |
| - virtual WebKit::WebGraphicsContext3D* context3D() const OVERRIDE |
| - { |
| - return m_context3D.get(); |
| - } |
| - |
| - virtual void sendFrameToParentCompositor( |
| - const WebKit::WebCompositorFrame&) OVERRIDE |
| - { |
| - } |
| - |
| -private: |
| - scoped_ptr<WebKit::WebGraphicsContext3D> m_context3D; |
| - Capabilities m_capabilities; |
| - WebKit::WebCompositorOutputSurfaceClient* m_client; |
| -}; |
| - |
| WebKit::WebCompositorOutputSurface* Compositor::createOutputSurface() { |
| if (test_compositor_enabled) { |
| ui::TestWebGraphicsContext3D* test_context = |
| @@ -376,8 +377,7 @@ WebKit::WebCompositorOutputSurface* Compositor::createOutputSurface() { |
| test_context->Initialize(); |
| return new WebGraphicsContextToOutputSurfaceAdapter(test_context); |
| } else { |
| - return new WebGraphicsContextToOutputSurfaceAdapter( |
| - ContextFactory::GetInstance()->CreateContext(this)); |
| + return ContextFactory::GetInstance()->CreateOutputSurface(this); |
| } |
| } |