| Index: ppapi/lib/gl/gles2/gl2ext_ppapi.c
|
| ===================================================================
|
| --- ppapi/lib/gl/gles2/gl2ext_ppapi.c (revision 69835)
|
| +++ ppapi/lib/gl/gles2/gl2ext_ppapi.c (working copy)
|
| @@ -4,26 +4,52 @@
|
|
|
| #include "ppapi/lib/gl/gles2/gl2ext_ppapi.h"
|
|
|
| -static const struct PPB_OpenGLES_Dev* g_gles2_interface;
|
| +#ifndef GL_FALSE
|
| +#define GL_FALSE 0
|
| +#endif // GL_FALSE
|
|
|
| -int GL_APIENTRY glInitializePPAPI(
|
| - PP_Module module,
|
| +#ifndef GL_TRUE
|
| +#define GL_TRUE 1
|
| +#endif // GL_TRUE
|
| +
|
| +#if defined(__GNUC__) && !defined(__APPLE__)
|
| +#define PP_TLS __thread
|
| +#elif defined(_MSC_VER)
|
| +#define PP_TLS __declspec(thread)
|
| +#else
|
| +// TODO(alokp): Fix all other platforms.
|
| +#define PP_TLS
|
| +#endif
|
| +
|
| +// TODO(alokp): This will need to be thread-safe if we build gles2 as a
|
| +// shared library.
|
| +static const struct PPB_OpenGLES2_Dev* g_gles2_interface = NULL;
|
| +
|
| +// TODO(alokp): Make sure PP_TLS works on all supported platforms.
|
| +static PP_TLS PP_Resource g_current_context = 0;
|
| +
|
| +GLboolean GL_APIENTRY glInitializePPAPI(
|
| PPB_GetInterface get_browser_interface) {
|
| - return 0;
|
| + if (!g_gles2_interface) {
|
| + g_gles2_interface = get_browser_interface(PPB_OPENGLES2_DEV_INTERFACE);
|
| + }
|
| + return g_gles2_interface ? GL_TRUE : GL_FALSE;
|
| }
|
|
|
| -int GL_APIENTRY glTerminatePPAPI() {
|
| - return 0;
|
| +GLboolean GL_APIENTRY glTerminatePPAPI() {
|
| + g_gles2_interface = NULL;
|
| + return GL_TRUE;
|
| }
|
|
|
| void GL_APIENTRY glSetCurrentContextPPAPI(PP_Resource context) {
|
| + g_current_context = context;
|
| }
|
|
|
| PP_Resource GL_APIENTRY glGetCurrentContextPPAPI() {
|
| - return 0;
|
| + return g_current_context;
|
| }
|
|
|
| -const struct PPB_OpenGLES_Dev* GL_APIENTRY glGetInterfacePPAPI() {
|
| +const struct PPB_OpenGLES2_Dev* GL_APIENTRY glGetInterfacePPAPI() {
|
| return g_gles2_interface;
|
| }
|
|
|
|
|