mpegtsmux: fix release_pad
authorDavid Schleef <ds@schleef.org>
Sun, 5 Dec 2010 03:55:32 +0000 (19:55 -0800)
committerDavid Schleef <ds@schleef.org>
Thu, 17 Feb 2011 21:47:52 +0000 (13:47 -0800)
Remove bogus freeing of pad element_private data that we
never set (collectpads uses it, which causes confusion here).
Also, check that our collectpads instance exists before using
it.  Partial fix for #636011.

gst/mpegtsmux/mpegtsmux.c

index 55f51f6..0ed2403 100644 (file)
@@ -800,28 +800,15 @@ static void
 mpegtsmux_release_pad (GstElement * element, GstPad * pad)
 {
   MpegTsMux *mux = GST_MPEG_TSMUX (element);
-  MpegTsPadData *pad_data = NULL;
 
   GST_DEBUG_OBJECT (mux, "Pad %" GST_PTR_FORMAT " being released", pad);
 
-  /* Get the MpegTsPadData out of the pad */
-  GST_OBJECT_LOCK (pad);
-  pad_data = (MpegTsPadData *) gst_pad_get_element_private (pad);
-  if (G_LIKELY (pad_data)) {
-    /* Free codec data reference if any */
-    if (pad_data->codec_data) {
-      GST_DEBUG_OBJECT (element, "releasing codec_data reference");
-      gst_buffer_unref (pad_data->codec_data);
-      pad_data->codec_data = NULL;
-    }
-    if (pad_data->prepare_data && pad_data->free_func) {
-      pad_data->free_func (pad_data->prepare_data);
-      pad_data->prepare_data = pad_data->free_func = NULL;
-    }
+  if (mux->collect) {
+    gst_collect_pads_remove_pad (mux->collect, pad);
   }
-  GST_OBJECT_UNLOCK (pad);
 
-  gst_collect_pads_remove_pad (mux->collect, pad);
+  /* chain up */
+  gst_element_remove_pad (element, pad);
 }
 
 static gboolean