glmixer: remove redundant creation and free of GPtrArrays
authorMatthew Waters <ystreet00@gmail.com>
Thu, 26 Jun 2014 01:12:49 +0000 (11:12 +1000)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:31:44 +0000 (19:31 +0000)
Also plugs a memory leak

gst-libs/gst/gl/gstglmixer.c

index 7d91f17..a3e5ec5 100644 (file)
@@ -426,12 +426,6 @@ gst_gl_mixer_reset (GstGLMixer * mix)
 }
 
 static void
-_free_pad_frame_data (gpointer data)
-{
-  g_slice_free1 (sizeof (GstGLMixerFrameData), data);
-}
-
-static void
 gst_gl_mixer_init (GstGLMixer * mix)
 {
   mix->priv = GST_GL_MIXER_GET_PRIVATE (mix);
@@ -441,9 +435,6 @@ gst_gl_mixer_init (GstGLMixer * mix)
   mix->fbo = 0;
   mix->depthbuffer = 0;
 
-  mix->frames = g_ptr_array_new_full (4, _free_pad_frame_data);
-  mix->array_buffers = g_ptr_array_new_full (4, NULL);
-
   /* initialize variables */
   gst_gl_mixer_reset (mix);
 }
@@ -455,9 +446,6 @@ gst_gl_mixer_finalize (GObject * object)
 
   g_mutex_clear (&mix->lock);
 
-  g_ptr_array_free (mix->frames, TRUE);
-  g_ptr_array_free (mix->array_buffers, TRUE);
-
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
@@ -1028,7 +1016,6 @@ gst_gl_mixer_start (GstAggregator * agg)
 static gboolean
 gst_gl_mixer_stop (GstAggregator * agg)
 {
-  guint i;
   GstGLMixer *mix = GST_GL_MIXER (agg);
   GstGLMixerClass *mixer_class = GST_GL_MIXER_GET_CLASS (mix);
 
@@ -1036,9 +1023,10 @@ gst_gl_mixer_stop (GstAggregator * agg)
     return FALSE;
 
   GST_OBJECT_LOCK (agg);
-  for (i = 0; i < GST_ELEMENT (agg)->numsinkpads; i++) {
-    g_slice_free1 (sizeof (GstGLMixerFrameData), mix->frames->pdata[i]);
-  }
+  g_ptr_array_free (mix->frames, TRUE);
+  mix->frames = NULL;
+  g_ptr_array_free (mix->array_buffers, TRUE);
+  mix->array_buffers = NULL;
   GST_OBJECT_UNLOCK (agg);
 
   if (mixer_class->reset)