diff --git a/gst-libs/gst/gl/gstglcontext.c b/gst-libs/gst/gl/gstglcontext.c index a764594811..aa8025dc57 100644 --- a/gst-libs/gst/gl/gstglcontext.c +++ b/gst-libs/gst/gl/gstglcontext.c @@ -1851,3 +1851,22 @@ static void gst_gl_wrapped_context_init (GstGLWrappedContext * context) { } + +G_GNUC_INTERNAL gboolean +_gst_gl_context_debug_is_enabled (GstGLContext * context) +{ +#if !defined(GST_DISABLE_GST_DEBUG) + GstDebugLevel level; + + level = gst_debug_category_get_threshold (gst_gl_debug); + + if (level < GST_LEVEL_WARNING) { + GST_CAT_INFO_OBJECT (gst_gl_context_debug, context, "Disabling GL context " + "debugging (gldebug category debug level < warning)"); + return FALSE; + } + return TRUE; +#else + return FALSE; +#endif +} diff --git a/gst-libs/gst/gl/gstglcontext_private.h b/gst-libs/gst/gl/gstglcontext_private.h index 4d190bf334..6926375e36 100644 --- a/gst-libs/gst/gl/gstglcontext_private.h +++ b/gst-libs/gst/gl/gstglcontext_private.h @@ -26,6 +26,9 @@ G_BEGIN_DECLS G_GNUC_INTERNAL extern GstDebugCategory *gst_gl_context_debug; +G_GNUC_INTERNAL +gboolean _gst_gl_context_debug_is_enabled (GstGLContext * context); + G_END_DECLS #endif /* __GST_GL_CONTEXT_PRIVATE_H__ */ diff --git a/gst-libs/gst/gl/gstgldebug.c b/gst-libs/gst/gl/gstgldebug.c index 6f8eb4aa83..cedf7bb0c5 100644 --- a/gst-libs/gst/gl/gstgldebug.c +++ b/gst-libs/gst/gl/gstgldebug.c @@ -340,17 +340,14 @@ _gst_gl_debug_enable (GstGLContext * context) return; } - level = gst_debug_category_get_threshold (gst_gl_debug); - - if (level < GST_LEVEL_ERROR) { - GST_CAT_INFO_OBJECT (gst_gl_context_debug, context, - "Disabling GL context debugging (gldebug category debug level < error)"); + if (!_gst_gl_context_debug_is_enabled (context)) return; - } GST_CAT_INFO_OBJECT (gst_gl_context_debug, context, "Enabling GL context debugging"); + level = gst_debug_category_get_threshold (gst_gl_debug); + gl->DebugMessageCallback (_gst_gl_debug_callback, context); if (level >= GST_LEVEL_DEBUG) { /* enable them all */ diff --git a/gst-libs/gst/gl/gstglframebuffer.c b/gst-libs/gst/gl/gstglframebuffer.c index 19307ca0bd..3aeaf2b6a7 100644 --- a/gst-libs/gst/gl/gstglframebuffer.c +++ b/gst-libs/gst/gl/gstglframebuffer.c @@ -45,6 +45,7 @@ #include "gstglframebuffer.h" #include "gstglcontext.h" +#include "gstglcontext_private.h" #include "gstglfuncs.h" #include "gstglmemory.h" #include "gstglrenderbuffer.h" @@ -523,6 +524,10 @@ gst_gl_context_check_framebuffer_status (GstGLContext * context, return FALSE; } + /* Don't do expensive framebuffer checks when debugging is disabled */ + if (!_gst_gl_context_debug_is_enabled (context)) + return TRUE; + switch (context->gl_vtable->CheckFramebufferStatus (fbo_target)) { case GL_FRAMEBUFFER_COMPLETE: return TRUE;