diff --git a/ext/gl/caopengllayersink.m b/ext/gl/caopengllayersink.m index 1cb72e5b98..5c7b47624f 100644 --- a/ext/gl/caopengllayersink.m +++ b/ext/gl/caopengllayersink.m @@ -1005,7 +1005,8 @@ gst_ca_opengl_layer_sink_on_draw (GstCAOpenGLLayerSink * ca_sink) if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (ca_sink); + else + _unbind_buffer (ca_sink); /* end default opengl scene */ GST_CA_OPENGL_LAYER_SINK_UNLOCK (ca_sink); diff --git a/ext/gl/gltestsrc.c b/ext/gl/gltestsrc.c index f6faea3b6e..c822103831 100644 --- a/ext/gl/gltestsrc.c +++ b/ext/gl/gltestsrc.c @@ -222,7 +222,8 @@ _src_shader_fill_bound_fbo (gpointer impl) if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (src); + else + _unbind_buffer (src); gst_gl_context_clear_shader (src->base.context); diff --git a/ext/gl/gstglfiltercube.c b/ext/gl/gstglfiltercube.c index 9e04ea0813..776aece1c0 100644 --- a/ext/gl/gstglfiltercube.c +++ b/ext/gl/gstglfiltercube.c @@ -484,7 +484,8 @@ _callback (gpointer stuff) if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (cube_filter); + else + _unbind_buffer (cube_filter); gl->Disable (GL_DEPTH_TEST); diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c index aa0ae40b7a..3fcdcedd81 100644 --- a/ext/gl/gstglimagesink.c +++ b/ext/gl/gstglimagesink.c @@ -2299,7 +2299,8 @@ gst_glimage_sink_on_draw (GstGLImageSink * gl_sink) if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (gl_sink); + else + _unbind_buffer (gl_sink); if (gl_sink->ignore_alpha) gl->Disable (GL_BLEND); diff --git a/ext/gl/gstgloverlay.c b/ext/gl/gstgloverlay.c index a2c9fbb20d..72f6ff4d8d 100644 --- a/ext/gl/gstgloverlay.c +++ b/ext/gl/gstgloverlay.c @@ -545,7 +545,8 @@ gst_gl_overlay_callback (GstGLFilter * filter, GstGLMemory * in_tex, out: if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (overlay); + else + _unbind_buffer (overlay); gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context); diff --git a/ext/gl/gstgltransformation.c b/ext/gl/gstgltransformation.c index bb4bd2c6f3..dba8733467 100644 --- a/ext/gl/gstgltransformation.c +++ b/ext/gl/gstgltransformation.c @@ -961,7 +961,8 @@ gst_gl_transformation_callback (gpointer stuff) if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (transformation); + else + _unbind_buffer (transformation); gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context); transformation->caps_change = FALSE; diff --git a/ext/gl/gstglvideomixer.c b/ext/gl/gstglvideomixer.c index 0306d22e53..1e14c5ed85 100644 --- a/ext/gl/gstglvideomixer.c +++ b/ext/gl/gstglvideomixer.c @@ -1613,15 +1613,16 @@ gst_gl_video_mixer_callback (gpointer stuff) video_mixer->output_geo_change = FALSE; GST_OBJECT_UNLOCK (video_mixer); - gl->DisableVertexAttribArray (attr_position_loc); - gl->DisableVertexAttribArray (attr_texture_loc); - - if (gl->GenVertexArrays) + if (gl->GenVertexArrays) { gl->BindVertexArray (0); + } else { + gl->DisableVertexAttribArray (attr_position_loc); + gl->DisableVertexAttribArray (attr_texture_loc); - gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0); - gl->BindBuffer (GL_ARRAY_BUFFER, 0); - gl->BindTexture (GL_TEXTURE_2D, 0); + gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0); + gl->BindBuffer (GL_ARRAY_BUFFER, 0); + gl->BindTexture (GL_TEXTURE_2D, 0); + } gl->Disable (GL_BLEND); diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c index 3247735288..297d371c46 100644 --- a/gst-libs/gst/gl/gstglcolorconvert.c +++ b/gst-libs/gst/gl/gstglcolorconvert.c @@ -2589,7 +2589,8 @@ _do_convert_draw (GstGLContext * context, GstGLColorConvert * convert) if (gl->BindVertexArray) gl->BindVertexArray (0); - _unbind_buffer (convert); + else + _unbind_buffer (convert); if (gl->DrawBuffer) gl->DrawBuffer (GL_COLOR_ATTACHMENT0); diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c index aba9daafe6..bb38fb6510 100644 --- a/gst-libs/gst/gl/gstglfilter.c +++ b/gst-libs/gst/gl/gstglfilter.c @@ -1251,6 +1251,7 @@ gst_gl_filter_draw_fullscreen_quad (GstGLFilter * filter) if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (filter); + else + _unbind_buffer (filter); } } diff --git a/gst-libs/gst/gl/gstglviewconvert.c b/gst-libs/gst/gl/gstglviewconvert.c index f057ce1ee0..63a67890ff 100644 --- a/gst-libs/gst/gl/gstglviewconvert.c +++ b/gst-libs/gst/gl/gstglviewconvert.c @@ -1928,7 +1928,8 @@ _do_view_convert_draw (GstGLContext * context, GstGLViewConvert * viewconvert) if (gl->BindVertexArray) gl->BindVertexArray (0); - _unbind_buffer (viewconvert); + else + _unbind_buffer (viewconvert); if (gl->DrawBuffer) gl->DrawBuffer (GL_COLOR_ATTACHMENT0); /* we are done with the shader */ diff --git a/tests/check/libs/gstglcontext.c b/tests/check/libs/gstglcontext.c index 37bac2ca57..bc2e40e3c4 100644 --- a/tests/check/libs/gstglcontext.c +++ b/tests/check/libs/gstglcontext.c @@ -246,7 +246,8 @@ blit_tex (gpointer data) if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (context); + else + _unbind_buffer (context); return TRUE; } diff --git a/tests/check/libs/gstglupload.c b/tests/check/libs/gstglupload.c index fe3efea5c5..516655fcb4 100644 --- a/tests/check/libs/gstglupload.c +++ b/tests/check/libs/gstglupload.c @@ -247,7 +247,8 @@ blit_tex (gpointer data) if (gl->GenVertexArrays) gl->BindVertexArray (0); - _unbind_buffer (context); + else + _unbind_buffer (context); return TRUE; }