[farsight2/master] Stop substream components in the right order

Olivier Crête olivier.crete at collabora.co.uk
Wed Dec 17 17:55:02 PST 2008


---
 gst/fsrtpconference/fs-rtp-substream.c |   34 +++++++++++++------------------
 1 files changed, 14 insertions(+), 20 deletions(-)

diff --git a/gst/fsrtpconference/fs-rtp-substream.c b/gst/fsrtpconference/fs-rtp-substream.c
index cb4f78a..7d802c5 100644
--- a/gst/fsrtpconference/fs-rtp-substream.c
+++ b/gst/fsrtpconference/fs-rtp-substream.c
@@ -609,15 +609,6 @@ fs_rtp_sub_stream_dispose (GObject *object)
     self->priv->output_ghostpad = NULL;
   }
 
-  if (self->priv->capsfilter) {
-    gst_object_ref (self->priv->capsfilter);
-    gst_element_set_state (self->priv->capsfilter, GST_STATE_NULL);
-    gst_bin_remove (GST_BIN (self->priv->conference), self->priv->capsfilter);
-    gst_element_set_state (self->priv->capsfilter, GST_STATE_NULL);
-    gst_object_unref (self->priv->capsfilter);
-    self->priv->capsfilter = NULL;
-  }
-
   if (self->priv->valve) {
     gst_object_ref (self->priv->valve);
     gst_element_set_state (self->priv->valve, GST_STATE_NULL);
@@ -627,16 +618,6 @@ fs_rtp_sub_stream_dispose (GObject *object)
     self->priv->valve = NULL;
   }
 
-
-  FS_RTP_SESSION_LOCK (self->priv->session);
-
-  if (self->priv->blocking_id)
-  {
-    gst_pad_remove_data_probe (self->priv->rtpbin_pad,
-        self->priv->blocking_id);
-    self->priv->blocking_id = 0;
-  }
-
   if (self->priv->codecbin) {
     gst_object_ref (self->priv->codecbin);
     gst_element_set_state (self->priv->codecbin, GST_STATE_NULL);
@@ -646,8 +627,21 @@ fs_rtp_sub_stream_dispose (GObject *object)
     self->priv->codecbin = NULL;
   }
 
-  FS_RTP_SESSION_UNLOCK (self->priv->session);
+  if (self->priv->capsfilter) {
+    gst_object_ref (self->priv->capsfilter);
+    gst_element_set_state (self->priv->capsfilter, GST_STATE_NULL);
+    gst_bin_remove (GST_BIN (self->priv->conference), self->priv->capsfilter);
+    gst_element_set_state (self->priv->capsfilter, GST_STATE_NULL);
+    gst_object_unref (self->priv->capsfilter);
+    self->priv->capsfilter = NULL;
+  }
 
+  if (self->priv->blocking_id)
+  {
+    gst_pad_remove_data_probe (self->priv->rtpbin_pad,
+        self->priv->blocking_id);
+    self->priv->blocking_id = 0;
+  }
 
   if (self->priv->rtpbin_pad) {
     gst_object_unref (self->priv->rtpbin_pad);
-- 
1.5.6.5




More information about the farsight-commits mailing list