From fd39b80a83da3049198ef317aab2d7bc5c82039a Mon Sep 17 00:00:00 2001 From: hut Date: Wed, 23 Dec 2009 20:02:39 +0100 Subject: optimized directory loading instead of creating a new directory object when loading_content, get the one which is cached in the environment. --- ranger/fsobject/directory.py | 4 ++-- 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 -- cgit 1.4.1-2-gfad0