override Element before Bin so we can access element fields of bins
authorThibault Saunier <tsaunier@igalia.com>
Mon, 6 May 2019 15:29:53 +0000 (11:29 -0400)
committerThibault Saunier <tsaunier@igalia.com>
Mon, 6 May 2019 15:30:47 +0000 (11:30 -0400)
And add a test

See https://gitlab.gnome.org/GNOME/pygobject/issues/325

gi/overrides/Gst.py
testsuite/test_gst.py

index 83b087c..bd4cd3b 100644 (file)
@@ -56,6 +56,22 @@ python module to use with Gst 0.10"
 
     warnings.warn(warn_msg, RuntimeWarning)
 
+
+class Element(Gst.Element):
+    @staticmethod
+    def link_many(*args):
+        '''
+        @raises: Gst.LinkError
+        '''
+        for pair in pairwise(args):
+            if not pair[0].link(pair[1]):
+                raise LinkError(
+                    'Failed to link {} and {}'.format(pair[0], pair[1]))
+
+Element = override(Element)
+__all__.append('Element')
+
+
 class Bin(Gst.Bin):
     def __init__(self, name=None):
         Gst.Bin.__init__(self, name=name)
@@ -593,21 +609,6 @@ def pairwise(iterable):
     return zip(a, b)
 
 
-class Element(Gst.Element):
-    @staticmethod
-    def link_many(*args):
-        '''
-        @raises: Gst.LinkError
-        '''
-        for pair in pairwise(args):
-            if not pair[0].link(pair[1]):
-                raise LinkError(
-                    'Failed to link {} and {}'.format(pair[0], pair[1]))
-
-Element = override(Element)
-__all__.append('Element')
-
-
 def TIME_ARGS(time):
     if time == Gst.CLOCK_TIME_NONE:
         return "CLOCK_TIME_NONE"
index 7ca8f7a..d63f4e2 100644 (file)
@@ -86,5 +86,12 @@ class TestStructure(TestCase):
         test = Gst.Structure('test,test=1')
         self.assertEqual(test['test'], 1)
 
+
+class TestBin(TestCase):
+
+    def test_add_pad(self):
+        Gst.init(None)
+        self.assertEqual(Gst.ElementFactory.make("bin", None).sinkpads, [])
+
 if __name__ == "__main__":
     unittest.main()