diff options
-rw-r--r-- | configure.ac | 32 | ||||
-rw-r--r-- | gst-libs/gst/gl/egl/gstglcontext_egl.c | 30 | ||||
-rw-r--r-- | gst-libs/gst/gl/gstglapi.h | 2 |
3 files changed, 52 insertions, 12 deletions
diff --git a/configure.ac b/configure.ac index 00c7f0728..1e1ad87de 100644 --- a/configure.ac +++ b/configure.ac @@ -805,14 +805,14 @@ if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then #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 # include <GLES2/gl2.h> # include <GLES2/gl2ext.h> # endif -# if __APPLE__ +# ifdef __APPLE__ # include <OpenGL/OpenGL.h> # include <OpenGL/gl.h> # if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 @@ -999,12 +999,6 @@ case $host in if test "x$NEED_WGL" = "xyes"; then AC_MSG_ERROR([WGL is not available on Mac OS X]) fi - if test "x$NEED_EGL" = "xyes"; then - AC_MSG_ERROR([EGL is not available on Mac OS X]) - fi - if test "x$NEED_GLES2" = "xyes"; then - AC_MSG_ERROR([OpenGL|ES 2.0 is not supported on your platform yet]) - fi if test "x$NEED_COCOA" != "xno"; then GL_LIBS="$LIBS -framework OpenGL -framework Cocoa -framework QuartzCore -framework CoreFoundation" @@ -1030,6 +1024,24 @@ case $host in USE_OPENGL=yes fi fi + + if test "x$HAVE_EGL" = "xyes"; then + if test "x$NEED_EGL" != "xno"; then + if test "x$HAVE_WINDOW_X11" = "xyes"; then + GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS" + GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS" + USE_EGL=yes + fi + fi + fi + + dnl OpenGL|ES 2.0 + if test "x$HAVE_GLES2" = "xyes"; then + if test "x$NEED_GLES2" != "xno"; then + GL_LIBS="$GL_LIBS -lGLESv2" + USE_GLES2=yes + fi + fi fi ;; *-mingw32*) @@ -1237,7 +1249,7 @@ if test "x$USE_GLES2" = "xyes"; then #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 @@ -1249,7 +1261,7 @@ fi if test "x$USE_OPENGL" = "xyes"; then GL_INCLUDES="$GL_INCLUDES -# if __APPLE__ +# ifdef __APPLE__ # include <OpenGL/OpenGL.h> # include <OpenGL/gl.h> # else 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 |