[Telepathy-commits] [multi-jingle/master] Also save the sinkpad so we can unlink it

Sjoerd Simons sjoerd.simons at collabora.co.uk
Sat Jan 17 15:00:11 PST 2009


---
 fs2.py                 |   14 ++++++++------
 multi-jingle-client.py |    5 +++--
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/fs2.py b/fs2.py
index 551679e..04830e8 100644
--- a/fs2.py
+++ b/fs2.py
@@ -159,10 +159,11 @@ class ConferenceStream:
         elif self.session.type == farsight.MEDIA_TYPE_AUDIO:
             sink = gst.element_factory_make("autoaudiosink")
 
-        self.add_sink(sink)
-        self.conference.pipeline.add(sink)
+        sinkpad = sink.get_pad ("sink")
+        self.add_sink(sinkpad, sink)
+        self.conference.pipeline.add( sink)
         sink.set_state(gst.STATE_PLAYING)
-        pad.link(sink.get_pad("sink"))
+        pad.link(sinkpad)
 
     def src_pad_added(self, stream, pad, codec):
         self.src_pad_hook (self, stream, pad, codec)
@@ -170,11 +171,12 @@ class ConferenceStream:
     def set_direction(self, direction):
         self._fsstream.set_property("direction", direction)
 
-    def add_sink(self, sink):
-        self.sinks.append(sink)
+    def add_sink(self, sinkpad, sink):
+        self.sinks.append((sinkpad, sink))
 
     def destroy(self):
-        for sink in self.sinks:
+        for (sinkpad, sink) in self.sinks:
+            sinkpad.unlink (sinkpad, peer)
             sink.set_locked_state(True)
             sink.set_state(gst.STATE_NULL)
             self.conference.pipeline.remove(sink)
diff --git a/multi-jingle-client.py b/multi-jingle-client.py
index 855a8d5..9af563e 100644
--- a/multi-jingle-client.py
+++ b/multi-jingle-client.py
@@ -189,12 +189,13 @@ class UI(gtk.Window):
         frame.add(vsink)
         frame.show_all()
 
-        stream.add_sink (vsink.sink)
+        sinkpad = vsink.sink.get_pad("sink")
+        stream.add_sink(sinkpad, vsink.sink)
 
         self.conference.pipeline.add(vsink.sink)
         vsink.sink.set_state(gst.STATE_PLAYING)
 
-        pad.link(vsink.sink.get_pad("sink"))
+        pad.link(sinkpad)
 
         gtk.gdk.threads_leave()
 
-- 
1.5.6.5



More information about the Telepathy-commits mailing list