// Copyright 2014 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. #ifndef MOJO_GLES2_GLES2_CONTEXT_H_ #define MOJO_GLES2_GLES2_CONTEXT_H_ #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "gpu/command_buffer/client/gles2_implementation.h" #include "mojo/gles2/command_buffer_client_impl.h" #include "mojo/public/c/gles2/gles2.h" struct MojoGLES2ContextPrivate {}; namespace gpu { class TransferBuffer; namespace gles2 { class GLES2CmdHelper; class GLES2Implementation; } } namespace mojo { namespace gles2 { class GLES2Context : public CommandBufferDelegate, public MojoGLES2ContextPrivate { public: explicit GLES2Context(const MojoAsyncWaiter* async_waiter, ScopedMessagePipeHandle command_buffer_handle, MojoGLES2ContextLost lost_callback, MojoGLES2DrawAnimationFrame animation_callback, void* closure); virtual ~GLES2Context(); bool Initialize(); gpu::gles2::GLES2Interface* interface() const { return implementation_.get(); } gpu::ContextSupport* context_support() const { return implementation_.get(); } void RequestAnimationFrames(); void CancelAnimationFrames(); private: virtual void ContextLost() OVERRIDE; virtual void DrawAnimationFrame() OVERRIDE; CommandBufferClientImpl command_buffer_; scoped_ptr<gpu::gles2::GLES2CmdHelper> gles2_helper_; scoped_ptr<gpu::TransferBuffer> transfer_buffer_; scoped_ptr<gpu::gles2::GLES2Implementation> implementation_; MojoGLES2ContextLost lost_callback_; MojoGLES2DrawAnimationFrame animation_callback_; void* closure_; MOJO_DISALLOW_COPY_AND_ASSIGN(GLES2Context); }; } // namespace gles2 } // namespace mojo #endif // MOJO_GLES2_GLES2_CONTEXT_H_