diff options
author | hut <hut@lavabit.com> | 2009-12-23 20:02:39 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2009-12-23 20:02:39 +0100 |
commit | fd39b80a83da3049198ef317aab2d7bc5c82039a (patch) | |
tree | 15f2f6762f79002266db64a0885d83806ab5d509 /ranger | |
parent | 793554498569c8f39e0ffcff4b475a948a4645c8 (diff) | |
download | ranger-fd39b80a83da3049198ef317aab2d7bc5c82039a.tar.gz |
optimized directory loading
instead of creating a new directory object when loading_content, get the one which is cached in the environment.
Diffstat (limited to 'ranger')
-rw-r--r-- | ranger/fsobject/directory.py | 4 | ||||
-rw-r--r-- | ranger/fsobject/loader.py | 16 |
2 files changed, 12 insertions, 8 deletions
diff --git a/ranger/fsobject/directory.py b/ranger/fsobject/directory.py index 99a4bc61..44c4cf96 100644 --- a/ranger/fsobject/directory.py +++ b/ranger/fsobject/directory.py @@ -128,10 +128,10 @@ class Directory(SuperClass, SettingsAware): files = [] for name in self.filenames: if isdir(name): - item = Directory(name) + item = self.fm.env.get_directory(name) else: item = File(name) - item.load() + item.load_if_outdated() files.append(item) yield diff --git a/ranger/fsobject/loader.py b/ranger/fsobject/loader.py index 00992651..483595c3 100644 --- a/ranger/fsobject/loader.py +++ b/ranger/fsobject/loader.py @@ -37,12 +37,16 @@ class Loader(object): self.queue.appendleft(obj) def work(self): - if not self.queue: - return - - item = self.queue[0] - if item.load_generator is None: - self.queue.popleft() + while True: + # get the first item with a proper load_generator + try: + item = self.queue[0] + if item.load_generator is None: + self.queue.popleft() + else: + break + except IndexError: + return self.rotate() self.tick += 1 |