glfiltercube: Don't initialize multiple shaders on renegotiation
authorMatthieu Bouron <matthieu.bouron@collabora.com>
Mon, 27 Apr 2015 12:49:59 +0000 (14:49 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 27 Apr 2015 12:52:37 +0000 (14:52 +0200)
ext/gl/gstglfiltercube.c

index a17b5df..ad529b3 100644 (file)
@@ -292,6 +292,12 @@ gst_gl_filter_cube_reset_gl (GstGLFilter * filter)
     gl->DeleteBuffers (1, &cube_filter->vertex_buffer);
     cube_filter->vertex_buffer = 0;
   }
+
+  if (cube_filter->shader) {
+    gst_gl_context_del_shader (GST_GL_BASE_FILTER (filter)->context,
+        cube_filter->shader);
+    cube_filter->shader = NULL;
+  }
 }
 
 static gboolean
@@ -313,6 +319,11 @@ gst_gl_filter_cube_init_shader (GstGLFilter * filter)
 {
   GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (filter);
 
+  if (cube_filter->shader) {
+    gst_object_unref (cube_filter->shader);
+    cube_filter->shader = NULL;
+  }
+
   /* blocking call, wait the opengl thread has compiled the shader */
   return gst_gl_context_gen_shader (GST_GL_BASE_FILTER (filter)->context,
       cube_v_src, cube_f_src, &cube_filter->shader);