diff options
Diffstat (limited to 'gst-libs')
-rw-r--r-- | gst-libs/gst/gl/egl/gstglcontext_egl.c | 30 | ||||
-rw-r--r-- | gst-libs/gst/gl/gstglapi.h | 2 |
2 files changed, 30 insertions, 2 deletions
diff --git a/gst-libs/gst/gl/egl/gstglcontext_egl.c b/gst-libs/gst/gl/egl/gstglcontext_egl.c index 74ddc7354..c466a0a68 100644 --- a/gst-libs/gst/gl/egl/gstglcontext_egl.c +++ b/gst-libs/gst/gl/egl/gstglcontext_egl.c @@ -627,7 +627,35 @@ gst_gl_context_egl_get_proc_address (GstGLAPI gl_api, const gchar * name) gpointer result = NULL; static GOnce g_once = G_ONCE_INIT; - result = gst_gl_context_default_get_proc_address (gl_api, name); +#ifdef __APPLE__ +#if GST_GL_HAVE_OPENGL && !defined(GST_GL_LIBGL_MODULE_NAME) + if (!result && (gl_api & (GST_GL_API_OPENGL | GST_GL_API_OPENGL3))) { + static GModule *module_opengl = NULL; + if (g_once_init_enter (&module_opengl)) { + GModule *setup_module_opengl = + g_module_open ("libGL.dylib", G_MODULE_BIND_LAZY); + g_once_init_leave (&module_opengl, setup_module_opengl); + } + if (module_opengl) + g_module_symbol (module_opengl, name, &result); + } +#endif +#if GST_GL_HAVE_GLES2 && !defined(GST_GL_LIBGLESV2_MODULE_NAME) + if (!result && (gl_api & (GST_GL_API_GLES2))) { + static GModule *module_gles2 = NULL; + if (g_once_init_enter (&module_gles2)) { + GModule *setup_module_gles2 = + g_module_open ("libGLESv2.dylib", G_MODULE_BIND_LAZY); + g_once_init_leave (&module_gles2, setup_module_gles2); + } + if (module_gles2) + g_module_symbol (module_gles2, name, &result); + } +#endif +#endif // __APPLE__ + + if (!result) + result = gst_gl_context_default_get_proc_address (gl_api, name); g_once (&g_once, load_egl_module, NULL); diff --git a/gst-libs/gst/gl/gstglapi.h b/gst-libs/gst/gl/gstglapi.h index 5f162c460..5ef1c6550 100644 --- a/gst-libs/gst/gl/gstglapi.h +++ b/gst-libs/gst/gl/gstglapi.h @@ -28,7 +28,7 @@ #ifndef GL_GLEXT_PROTOTYPES #define GL_GLEXT_PROTOTYPES 1 #endif -# ifdef __APPLE__ +# ifdef HAVE_IOS # include <OpenGLES/ES2/gl.h> # include <OpenGLES/ES2/glext.h> # else |