Author: schwardt
Date: Mon Feb 19 20:27:01 2007
New Revision: 2498

Modified:
   trunk/WIP/record/src/gsttssplitter.c

Log:
- fixed remove filter


Modified: trunk/WIP/record/src/gsttssplitter.c
==============================================================================
--- trunk/WIP/record/src/gsttssplitter.c        (original)
+++ trunk/WIP/record/src/gsttssplitter.c        Mon Feb 19 20:27:01 2007
@@ -638,6 +638,7 @@
   DEBUGf("remove_filter(%s)", name);
 
   GstTSSplitterFilter *pidfilter = NULL;
+  GstPad *sinkpad = NULL;
   int i = 0;
 
   // find pidfilter to be removed
@@ -646,26 +647,29 @@
   if (!pidfilter)
     return;
 
-#ifdef THIS_IS_BROKEN
+  // unlink pad
+  sinkpad = gst_pad_get_peer ( pidfilter->pad );
+  gst_pad_unlink (pidfilter->pad, sinkpad);
+
   // remove pad
-  gst_element_remove_pad(GST_ELEMENT (filter), pidfilter.pad);
-  gst_object_unref(pidfilter.pad);
-  pidfilter.pad = NULL;
+  gst_element_remove_pad(GST_ELEMENT (filter), pidfilter->pad);
+  gst_object_unref(pidfilter->pad);
+  pidfilter->pad = NULL;
   
   // free pidlist + name
-  free(pidfilter.pidlist);
-  pidfilter.pidlist = NULL;
-  free(pidfilter.name);
-  pidfilter.name = NULL;
+  free(pidfilter->pidlist);
+  pidfilter->pidlist = NULL;
+  free(pidfilter->name);
+  pidfilter->name = NULL;
   
   // cleanup pidfilterlist
   if (filter->filterlist_len > 1) {
     i = filter->filterlist_len - filter->filterlist_free - 1;
     
     if (filter->filterlist[i].name != NULL) {
-      pidfilter.name = filter->filterlist[i].name;
-      pidfilter.pidlist = filter->filterlist[i].pidlist;
-      pidfilter.pad = filter->filterlist[i].pad;
+      pidfilter->name = filter->filterlist[i].name;
+      pidfilter->pidlist = filter->filterlist[i].pidlist;
+      pidfilter->pad = filter->filterlist[i].pad;
       
       filter->filterlist[i].name = NULL;
       filter->filterlist[i].pidlist = NULL;
@@ -675,6 +679,4 @@
     }
   }    
   filter->filterlist_free += 1;
-#endif
-  return;
 }

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to