[telepathy-stream-engine/refs/tags/telepathy-stream-engine_0.5.10] Iterate internal links inside sink

Olivier Crête olivier.crete at collabora.co.uk
Mon Oct 26 09:28:25 PDT 2009


---
 src/tp-stream-engine.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/src/tp-stream-engine.c b/src/tp-stream-engine.c
index 1d358d5..524b2ce 100644
--- a/src/tp-stream-engine.c
+++ b/src/tp-stream-engine.c
@@ -739,6 +739,20 @@ audio_pad_linked (GstPad *pad, GstPad *peer, TpStreamEngine *self)
 }
 
 static void
+audio_pad_internal_links_iter (gpointer data, gpointer user_data)
+{
+  TpStreamEngine *self = user_data;
+  GstPad *pad = data;
+  GstIterator *iter;
+
+  iter = gst_pad_iterate_internal_links (pad);
+  while (gst_iterator_foreach (iter, audio_pad_iter, self) ==
+      GST_ITERATOR_RESYNC)
+    gst_iterator_resync (iter);
+  gst_iterator_free (iter);
+}
+
+static void
 audio_sink_added_cb (TpStreamEngineAudioStream *audiostream,
     GstElement *sink, TpStreamEngine *self)
 {
@@ -747,11 +761,14 @@ audio_sink_added_cb (TpStreamEngineAudioStream *audiostream,
   g_mutex_lock (self->priv->mutex);
 
   iter = gst_element_iterate_sink_pads (sink);
-
   while (gst_iterator_foreach (iter, audio_pad_iter, self) ==
       GST_ITERATOR_RESYNC)
     gst_iterator_resync (iter);
 
+  gst_iterator_resync (iter);
+  while (gst_iterator_foreach (iter, audio_pad_internal_links_iter, self) ==
+      GST_ITERATOR_RESYNC)
+    gst_iterator_resync (iter);
   gst_iterator_free (iter);
 
   g_mutex_unlock (self->priv->mutex);
-- 
1.5.6.5




More information about the telepathy-commits mailing list