Add basic remove_output code

This commit is contained in:
Thomas Adamcik 2011-05-15 23:50:52 +02:00
parent fe3f5338dd
commit 743235b09d

View File

@ -278,5 +278,22 @@ class GStreamer(ThreadingActor):
self._outputs[output.get_name()] = output
logger.info('Added %s', output.get_name())
def list_outputs(self):
return self._outputs.keys()
def remove_output(self, name):
if name not in self._outputs:
return # FIXME raise mopidy exception of some sort?
src = self._taginject.get_pad('src')
src.set_blocked_async(True, self._blocked_callback, name)
def _blocked_callback(self, pad, blocked, name):
output = self._outputs.pop(name)
gst.element_unlink_many(self._tee, output)
output.set_state(gst.STATE_NULL)
self._pipeline.remove(output)
pad.set_blocked(False)
logger.warning(u'Removed %s', name)