summaryrefslogtreecommitdiff
path: root/gst-libs
diff options
context:
space:
mode:
authorJulien Isorce <julien.isorce@gmail.com>2015-07-06 00:52:06 +0100
committerJulien Isorce <julien.isorce@gmail.com>2015-07-27 09:03:58 +0100
commit5e4b94c1bbf530db49b56915154f4d9fabd09bec (patch)
tree845bc2c1eb266364693965c97eec8c54c4311ab5 /gst-libs
parent45f8a272117592ed72d9e5a0923085b893fd2a1a (diff)
downloadgstreamer-plugins-bad-5e4b94c1bbf530db49b56915154f4d9fabd09bec.tar.gz
gl: support cgl, egl and glx within a same build
On osx, with the same build, gst-launch-1.0 videotestsrc ! glimagesink works with: GST_GL_PLATFORM=egl GST_GL_WINDOW=x11 GST_GL_API=gles2 GST_GL_PLATFORM=egl GST_GL_WINDOW=x11 GST_GL_API=opengl GST_GL_PLATFORM=glx GST_GL_WINDOW=x11 GST_GL_API=opengl GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa GST_GL_API=opengl GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa GST_GL_API=opengl3 https://bugzilla.gnome.org/show_bug.cgi?id=752743
Diffstat (limited to 'gst-libs')
-rw-r--r--gst-libs/gst/gl/egl/gstglcontext_egl.c30
-rw-r--r--gst-libs/gst/gl/gstglapi.h2
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