[pitivi: 4/6] previewer: limit maximum number of pending request



commit e1b23e89497af72cd4fda6271e78f0b31903c614
Author: Brandon Lewis <brandon_lewis berkeley edu>
Date:   Mon Mar 9 11:36:29 2009 -0700

    previewer: limit maximum number of pending requests to user configurable limit
---
 pitivi/ui/previewer.py |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/pitivi/ui/previewer.py b/pitivi/ui/previewer.py
index 6e04386..2e75ab3 100644
--- a/pitivi/ui/previewer.py
+++ b/pitivi/ui/previewer.py
@@ -56,6 +56,13 @@ GlobalSettings.addConfigOption("thumbnailCacheSize",
     key="cache-size",
     default=250)
 
+# the maximum number of thumbnails to enqueue at a given time. setting this to 
+# a larger value will increase latency after large operations, such as zooming
+GlobalSettings.addConfigOption("thumbnailMaxRequests",
+    section="thumbnailing",
+    key="max-requests",
+    default = 10)
+
 # Previewer                      -- abstract base class with public interface for UI
 # |_DefaultPreviewer             -- draws a default thumbnail for UI
 # |_LivePreviewer                -- draws a continuously updated preview
@@ -136,6 +143,7 @@ class RandomAccessPreviewer(Previewer):
         self._queue = []
         self._cache = ThumbnailCache(size=
             instance.PiTiVi.settings.thumbnailCacheSize)
+        self.max_requests = instance.PiTiVi.settings.thumbnailMaxRequests
 
         # FIXME:
         # why doesn't this work?
@@ -257,10 +265,8 @@ class RandomAccessPreviewer(Previewer):
     def _requestThumbnail(self, segment):
         """Queue a thumbnail request for the given segment"""
 
-        # TODO: need some sort of timeout so the queue doesn't fill up if the
-        # thumbnail never arrives.
-
-        if segment not in self._queue:
+        if (segment not in self._queue) and (len(self._queue) <=
+            self.max_requests):
             if self._queue:
                 self._queue.append(segment)
             else:



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