[pitivi: 4/9] timeline/track: allow copy()ing objects on which makeBin hasn't been called yet.



commit cc30c6898977ea7eb6a362f72d515771645ad0e0
Author: Alessandro Decina <alessandro d gmail com>
Date:   Tue Aug 31 17:23:17 2010 +0200

    timeline/track: allow copy()ing objects on which makeBin hasn't been called yet.

 pitivi/timeline/track.py |    9 +++++----
 tests/test_track.py      |    8 ++++++++
 2 files changed, 13 insertions(+), 4 deletions(-)
---
diff --git a/pitivi/timeline/track.py b/pitivi/timeline/track.py
index 7b99fd7..9ec185f 100644
--- a/pitivi/timeline/track.py
+++ b/pitivi/timeline/track.py
@@ -317,7 +317,7 @@ class TrackObject(Signallable, Loggable):
         self.track = None
         self.timeline_object = None
         self.interpolators = {}
-        self._rebuild_interpolators = True
+        self._rebuild_interpolators = False
         self._public_priority = priority
         self._position = 0
         self._stagger = 0
@@ -359,12 +359,12 @@ class TrackObject(Signallable, Loggable):
         return self.interpolators
 
     def _maybeBuildInterpolators(self):
-        if not list(self.gnl_object.elements()):
-            raise TrackError("makeBin hasn't been called yet")
-
         if not self._rebuild_interpolators:
             return
 
+        if not list(self.gnl_object.elements()):
+            raise TrackError("makeBin hasn't been called yet")
+
         self._rebuild_interpolators = False
 
         factory_properties = self.factory.getInterpolatedProperties(self.stream)
@@ -609,6 +609,7 @@ class TrackObject(Signallable, Loggable):
 
         bin = self.factory.makeBin(self.stream)
         self.gnl_object.add(bin)
+        self._rebuild_interpolators = True
         self._maybeBuildInterpolators()
 
     def releaseBin(self):
diff --git a/tests/test_track.py b/tests/test_track.py
index 47d8f68..8a9601d 100644
--- a/tests/test_track.py
+++ b/tests/test_track.py
@@ -537,3 +537,11 @@ class TestTrack(TestCase):
         # any priority
         prev = track1.getNextTrackObject(obj3, priority=None)
         self.failUnlessEqual(prev, obj4)
+
+    def testCopyMakeBinNotCalled(self):
+        factory = self.factory
+        stream = self.stream
+        obj1 = SourceTrackObject(factory, stream)
+        # this used to raise an exception
+        obj2 = obj1.copy()
+        self.failUnlessEqual(obj1.start, obj2.start)



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