[pitivi: 5/6] SingleDecodeBin: prevent endless loop with new parsers



commit 0f0389dd3e02cf9847b8b673fbbdab6c9d703200
Author: Renà Stadler <rene stadler collabora co uk>
Date:   Fri Oct 21 13:53:29 2011 +0200

    SingleDecodeBin: prevent endless loop with new parsers
    
    Parsers also accept their output as input now, so the old autoplugging logic
    causes an infinite loop.
    
    Fixes bug #662311.

 pitivi/elements/singledecodebin.py |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
---
diff --git a/pitivi/elements/singledecodebin.py b/pitivi/elements/singledecodebin.py
index 5296c40..3deede0 100644
--- a/pitivi/elements/singledecodebin.py
+++ b/pitivi/elements/singledecodebin.py
@@ -106,6 +106,7 @@ class SingleDecodeBin(gst.Bin):
         self._dynamics = []
 
         self._validelements = []  # added elements
+        self._usedfactories = []
 
         self.debug("stream:%r" % self.stream)
 
@@ -212,6 +213,10 @@ class SingleDecodeBin(gst.Bin):
 
         result = None
         for factory in factories:
+            # Never plug the same factory more than once (endless loop!)
+            if factory in self._usedfactories:
+                continue
+
             element = factory.create()
             if not element:
                 self.warning("weren't able to create element from %r" % factory)
@@ -230,6 +235,8 @@ class SingleDecodeBin(gst.Bin):
                 self.remove(element)
                 continue
 
+            self._usedfactories.append (factory)
+
             self._closeLink(element)
             element.set_state(gst.STATE_PAUSED)
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]