Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / mojo / public / gles2 / gles2_private.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "mojo/public/gles2/gles2_private.h"
6
7 #include <assert.h>
8 #include <stddef.h>
9
10 #include "mojo/public/c/gles2/gles2.h"
11 #include "mojo/public/gles2/gles2_interface.h"
12
13 static mojo::GLES2Support* g_gles2_support = NULL;
14 static mojo::GLES2Interface* g_gles2_interface = NULL;
15
16 extern "C" {
17
18 void MojoGLES2Initialize(const MojoAsyncWaiter* async_waiter) {
19   assert(g_gles2_support);
20   return g_gles2_support->Initialize(async_waiter);
21 }
22
23 void MojoGLES2Terminate() {
24   assert(g_gles2_support);
25   return g_gles2_support->Terminate();
26 }
27
28 MojoGLES2Context MojoGLES2CreateContext(
29     MojoHandle handle,
30     MojoGLES2ContextLost lost_callback,
31     MojoGLES2DrawAnimationFrame animation_callback,
32     void* closure) {
33   return g_gles2_support->CreateContext(mojo::MessagePipeHandle(handle),
34                                         lost_callback,
35                                         animation_callback,
36                                         closure);
37 }
38
39 void MojoGLES2DestroyContext(MojoGLES2Context context) {
40   return g_gles2_support->DestroyContext(context);
41 }
42
43 void MojoGLES2MakeCurrent(MojoGLES2Context context) {
44   assert(g_gles2_support);
45   g_gles2_support->MakeCurrent(context);
46   g_gles2_interface = g_gles2_support->GetGLES2InterfaceForCurrentContext();
47 }
48
49 void MojoGLES2SwapBuffers() {
50   assert(g_gles2_support);
51   return g_gles2_support->SwapBuffers();
52 }
53
54 void MojoGLES2RequestAnimationFrames(MojoGLES2Context context) {
55   assert(g_gles2_support);
56   return g_gles2_support->RequestAnimationFrames(context);
57 }
58
59 void MojoGLES2CancelAnimationFrames(MojoGLES2Context context) {
60   assert(g_gles2_support);
61   return g_gles2_support->CancelAnimationFrames(context);
62 }
63
64 void* MojoGLES2GetGLES2Interface(MojoGLES2Context context) {
65   assert(g_gles2_support);
66   return g_gles2_support->GetGLES2Interface(context);
67 }
68
69 void* MojoGLES2GetContextSupport(MojoGLES2Context context) {
70   assert(g_gles2_support);
71   return g_gles2_support->GetContextSupport(context);
72 }
73
74 #define VISIT_GL_CALL(Function, ReturnType, PARAMETERS, ARGUMENTS) \
75   ReturnType gl##Function PARAMETERS {                             \
76     return g_gles2_interface->Function ARGUMENTS;                  \
77   }
78 #include "mojo/public/c/gles2/gles2_call_visitor_autogen.h"
79 #undef VISIT_GL_CALL
80
81 }  // extern "C"
82
83 namespace mojo {
84
85 GLES2Support::~GLES2Support() {}
86
87 void GLES2Support::Init(GLES2Support* gles2_support) {
88   assert(!g_gles2_support);
89   g_gles2_support = gles2_support;
90 }
91
92 }  // namespace mojo