From 501db565970deb9cdf0e022f2718f23493a590c9 Mon Sep 17 00:00:00 2001 From: Alessandro Decina Date: Mon, 15 Oct 2012 09:10:25 +0200 Subject: [PATCH] overrides: implement the python iterator protocol for Gst.Iterator So that you can use: for value in gst_iterator: ... --- gi/overrides/Gst.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gi/overrides/Gst.py b/gi/overrides/Gst.py index 1e3cca51d2..392fd31f4e 100644 --- a/gi/overrides/Gst.py +++ b/gi/overrides/Gst.py @@ -77,6 +77,26 @@ class Caps(Gst.Caps): Caps = override(Caps) __all__.append('Caps') +class IteratorError(Exception): + pass +__all__.append('IteratorError') + +class Iterator(Gst.Iterator): + def __iter__(self): + while True: + result, value = self.next() + if result == Gst.IteratorResult.DONE: + break + + if result != Gst.IteratorResult.OK: + raise IteratorError(result) + + yield value + +Iterator = override(Iterator) +__all__.append('Iterator') + + class ElementFactory(Gst.ElementFactory): # ElementFactory