override Element before Bin so we can access element fields of bins

And add a test

See https://gitlab.gnome.org/GNOME/pygobject/issues/325
This commit is contained in:
Thibault Saunier 2019-05-06 11:29:53 -04:00
parent 2e91b713f1
commit 6fcd2c835f
2 changed files with 23 additions and 15 deletions

View 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"

View 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()