gremlin/gremlin.in: Add function to iterate over a bin's children.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 17 Apr 2018 21:26:25 +0000 (22:26 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 19 Apr 2018 11:22:49 +0000 (12:22 +0100)
The newer GStreamer bindings don't have the convenient method for doing
this directly, so stitch it together with the low-level stuff that is
provided.

gremlin/gremlin.in

index 79c0ea9..4992599 100644 (file)
@@ -718,6 +718,10 @@ def link_elements(elts):
   "Link the elements ELTS together, in order."
   GS.element_link_many(*elts)
 
+def bin_children(bin):
+  "Iterate over the (direct) children of a BIN."
+  for elt in bin.elements(): yield elt
+
 class GStreamerProgressEyecandy (ProgressEyecandy):
   """
   Provide amusement while GStreamer is busy doing something.
@@ -859,7 +863,7 @@ class AudioIdentifier (object):
     ## things from being too awful.)
     me.cap = None
     me.dcap = None
-    for e in decoder.elements():
+    for e in bin_children(decoder):
       if e.get_factory().get_name() == 'typefind':
         tfelt = e
         break