[farsight2/master] Free recvonly pipeline when putting port too

Olivier Crête olivier.crete at collabora.co.uk
Thu Feb 5 06:32:05 PST 2009


---
 transmitters/rawudp/fs-rawudp-transmitter.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/transmitters/rawudp/fs-rawudp-transmitter.c b/transmitters/rawudp/fs-rawudp-transmitter.c
index 636e530..47d4a9f 100644
--- a/transmitters/rawudp/fs-rawudp-transmitter.c
+++ b/transmitters/rawudp/fs-rawudp-transmitter.c
@@ -959,6 +959,26 @@ fs_rawudp_transmitter_put_udpport (FsRawUdpTransmitter *trans,
       GST_ERROR ("Could not remove udpsink element from transmitter source");
   }
 
+  if (udpport->recvonly_requested_pad)
+  {
+    gst_element_release_request_pad (udpport->tee,
+        udpport->recvonly_requested_pad);
+    gst_object_unref (udpport->recvonly_requested_pad);
+  }
+
+  if (udpport->recvonly_udpsink)
+  {
+    GstStateChangeReturn ret;
+    gst_element_set_locked_state (udpport->recvonly_udpsink, TRUE);
+    ret = gst_element_set_state (udpport->recvonly_udpsink, GST_STATE_NULL);
+    if (ret != GST_STATE_CHANGE_SUCCESS)
+      GST_ERROR ("Error changing state of udpsink: %s",
+          gst_element_state_change_return_get_name (ret));
+    if (!gst_bin_remove (GST_BIN (trans->priv->gst_sink),
+            udpport->recvonly_udpsink))
+      GST_ERROR ("Could not remove udpsink element from transmitter source");
+  }
+
   if (udpport->fd >= 0)
     close (udpport->fd);
 
-- 
1.5.6.5




More information about the farsight-commits mailing list