diff --git a/CMakeLists.txt b/CMakeLists.txt index dea1a26..6b715e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,6 +78,7 @@ if(UNIX) else() add_definitions(-DLINUX) +# add_definitions(-DUSE_GST_OPENGL_SYNC_HANDLER) # CPACK set(CPACK_SYSTEM_NAME "${CMAKE_HOST_SYSTEM_NAME}") diff --git a/src/MediaPlayer.cpp b/src/MediaPlayer.cpp index 9d39e38..83f3515 100644 --- a/src/MediaPlayer.cpp +++ b/src/MediaPlayer.cpp @@ -44,6 +44,9 @@ #define USE_GST_PLAYBIN #endif +#ifdef USE_GST_OPENGL_SYNC_HANDLER +#include "RenderingManager.h" +#endif std::list MediaPlayer::registered_; diff --git a/src/RenderingManager.cpp b/src/RenderingManager.cpp index 344adfa..fd97f00 100644 --- a/src/RenderingManager.cpp +++ b/src/RenderingManager.cpp @@ -75,6 +75,10 @@ #include "RenderingManager.h" #ifdef USE_GST_OPENGL_SYNC_HANDLER + +GLFW_EXPOSE_NATIVE_X11 +#include + // // Discarded because not working under OSX - kept in case it would become useful // @@ -376,25 +380,6 @@ bool Rendering::init() Log::Info("No hardware decoding plugin found."); } -#ifdef SYNC_GSTREAMER_OPENGL_CONTEXT -#if GST_GL_HAVE_PLATFORM_WGL - global_gl_context = gst_gl_context_new_wrapped (display, (guintptr) wglGetCurrentContext (), - GST_GL_PLATFORM_WGL, GST_GL_API_OPENGL); -#elif GST_GL_HAVE_PLATFORM_CGL -// global_display = GST_GL_DISPLAY ( glfwGetCocoaMonitor(main_.window()) ); - global_display = GST_GL_DISPLAY (gst_gl_display_cocoa_new ()); - - global_gl_context = gst_gl_context_new_wrapped (global_display, - (guintptr) 0, - GST_GL_PLATFORM_CGL, GST_GL_API_OPENGL); -#elif GST_GL_HAVE_PLATFORM_GLX - global_display = (GstGLDisplay*) gst_gl_display_x11_new_with_display( glfwGetX11Display() ); - global_gl_context = gst_gl_context_new_wrapped (global_display, - (guintptr) glfwGetGLXContext(main_.window()), - GST_GL_PLATFORM_GLX, GST_GL_API_OPENGL); -#endif -#endif - // // Monitors // @@ -420,6 +405,25 @@ bool Rendering::init() // outputs_ = std::vector(MAX_OUTPUT_WINDOW); +#ifdef USE_GST_OPENGL_SYNC_HANDLER +#if GST_GL_HAVE_PLATFORM_WGL + global_gl_context = gst_gl_context_new_wrapped (display, (guintptr) wglGetCurrentContext (), + GST_GL_PLATFORM_WGL, GST_GL_API_OPENGL); +#elif GST_GL_HAVE_PLATFORM_CGL + // global_display = GST_GL_DISPLAY ( glfwGetCocoaMonitor(main_.window()) ); + global_display = GST_GL_DISPLAY (gst_gl_display_cocoa_new ()); + + global_gl_context = gst_gl_context_new_wrapped (global_display, + (guintptr) 0, + GST_GL_PLATFORM_CGL, GST_GL_API_OPENGL); +#elif GST_GL_HAVE_PLATFORM_GLX + global_display = (GstGLDisplay*) gst_gl_display_x11_new_with_display( glfwGetX11Display() ); + global_gl_context = gst_gl_context_new_wrapped (global_display, + (guintptr) glfwGetGLXContext(main_.window()), + GST_GL_PLATFORM_GLX, GST_GL_API_OPENGL); +#endif +#endif + return true; } diff --git a/src/RenderingManager.h b/src/RenderingManager.h index a1a9071..6ebd4b5 100644 --- a/src/RenderingManager.h +++ b/src/RenderingManager.h @@ -11,8 +11,6 @@ #include "Screenshot.h" -//#define USE_GST_OPENGL_SYNC_HANDLER - typedef struct GLFWmonitor GLFWmonitor; typedef struct GLFWwindow GLFWwindow; class FrameBuffer;