diff options
author | hut <hut@lavabit.com> | 2009-12-23 01:18:31 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2009-12-23 01:18:31 +0100 |
commit | 0115ab105d160c6923f7a3449dbd9345d0fe4a65 (patch) | |
tree | ff229528344968dc01247ad79c91a66c91d59dd0 /ranger/fsobject/loader.py | |
parent | 85f45f481311ff3fb241c89c824ccc80583cd99a (diff) | |
download | ranger-0115ab105d160c6923f7a3449dbd9345d0fe4a65.tar.gz |
fixed / improved loader
Diffstat (limited to 'ranger/fsobject/loader.py')
-rw-r--r-- | ranger/fsobject/loader.py | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/ranger/fsobject/loader.py b/ranger/fsobject/loader.py index a1ebcc97..ef91aae3 100644 --- a/ranger/fsobject/loader.py +++ b/ranger/fsobject/loader.py @@ -14,7 +14,8 @@ def delayfunc(n): if n < 4: return 0.05 else: - return math.log(n-2) * 0.2 + return 0.3 +# return math.log(n-2) * 0.2 class Loader(object): seconds_of_work_time = 0.1 @@ -25,37 +26,37 @@ class Loader(object): self.status_generator = status_generator() self.tick = 0 self.rotate() + self.old_item = None def rotate(self): self.status = next(self.status_generator) def add(self, obj): - self.queue.append(obj) + while obj in self.queue: + self.queue.remove(obj) + self.queue.appendleft(obj) def work(self): - if self.item is None: - try: - self.item = self.queue.popleft() - except IndexError: - return + if not self.queue: + return - self.load_generator = self.item.load_bit_by_bit() - self.tick = 0 + item = self.queue[0] + if item.load_generator is None: + self.queue.popleft() self.rotate() self.tick += 1 - start_time = time() - end_time = time() + delayfunc(self.tick) + if item != self.old_item: + self.tick = 0 + self.old_item = item - log(tuple(map(str, self.queue))) + end_time = time() + delayfunc(self.tick) try: -# log("loading " + self.item.basename) while time() < end_time: - next(self.load_generator) - + next(item.load_generator) except StopIteration: - self.item = None - self.load_generator = None + item.load_generator = None + self.queue.popleft() - def __nonzero__(self): - return bool(self.queue or self.item is not None) + def has_work(self): + return bool(self.queue) |