[pitivi] Change Seeker to do the first seek in a idle_add.



commit da50345b8d9f22a5d93120015587d4a9c8de6741
Author: Alessandro Decina <alessandro d gmail com>
Date:   Tue May 19 17:08:21 2009 +0200

    Change Seeker to do the first seek in a idle_add.
    
    Fixes a deadlock in gnlcomposition caused by the ruler seeking in
    setShadedDuration, which is triggered when the composition start/duration values
    change.
---
 pitivi/utils.py      |    5 ++++-
 tests/test_seeker.py |    3 +++
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/pitivi/utils.py b/pitivi/utils.py
index a118ccd..cd4bf71 100644
--- a/pitivi/utils.py
+++ b/pitivi/utils.py
@@ -264,13 +264,16 @@ class Seeker(Signallable):
         if self.pending_seek_id is None:
             self.position = position
             self.format = format
-            self._seekTimeoutCb()
+            self._doFirstSeek()
             self.pending_seek_id = self._scheduleSeek(self.timeout,
                     self._seekTimeoutCb)
         else:
             self.position = position
             self.format = format
 
+    def _doFirstSeek(self):
+        gobject.idle_add(self._seekTimeoutCb)
+
     def _scheduleSeek(self, timeout, callback):
         return gobject.timeout_add(timeout, callback)
 
diff --git a/tests/test_seeker.py b/tests/test_seeker.py
index b8a1a13..ffce449 100644
--- a/tests/test_seeker.py
+++ b/tests/test_seeker.py
@@ -26,6 +26,9 @@ import gst
 class StubSeeker(Seeker):
     seek_id = 0
 
+    def _doFirstSeek(self):
+        self._seekTimeoutCb()
+
     def _scheduleSeek(self, position, format):
         # mock Seeker._scheduleSeek so that we don't need a mainloop
         seek_id = self.seek_id



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