#ifndef MOJO_PUBLIC_GLES2_GLES2_PRIVATE_H_
#define MOJO_PUBLIC_GLES2_GLES2_PRIVATE_H_
#include <stdint.h>
#include "mojo/public/c/gles2/gles2_export.h"
#include "mojo/public/c/gles2/gles2_types.h"
#include "mojo/public/c/system/async_waiter.h"
#include "mojo/public/cpp/system/core.h"
namespace mojo {
class GLES2Interface;
class MOJO_GLES2_EXPORT GLES2Support {
public:
virtual ~GLES2Support();
static void Init(GLES2Support* gles2_support);
virtual void Initialize(MojoAsyncWaiter* async_waiter) = 0;
virtual void Terminate() = 0;
virtual MojoGLES2Context CreateContext(
MessagePipeHandle handle,
MojoGLES2ContextLost lost_callback,
MojoGLES2DrawAnimationFrame animation_callback,
void* closure) = 0;
virtual void DestroyContext(MojoGLES2Context context) = 0;
virtual void MakeCurrent(MojoGLES2Context context) = 0;
virtual void SwapBuffers() = 0;
virtual void RequestAnimationFrames(MojoGLES2Context context) = 0;
virtual void CancelAnimationFrames(MojoGLES2Context context) = 0;
virtual void* GetGLES2Interface(MojoGLES2Context context) = 0;
virtual void* GetContextSupport(MojoGLES2Context context) = 0;
virtual GLES2Interface* GetGLES2InterfaceForCurrentContext() = 0;
};
}
#endif