[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