about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2009-12-23 20:02:39 +0100
committerhut <hut@lavabit.com>2009-12-23 20:02:39 +0100
commitfd39b80a83da3049198ef317aab2d7bc5c82039a (patch)
tree15f2f6762f79002266db64a0885d83806ab5d509
parent793554498569c8f39e0ffcff4b475a948a4645c8 (diff)
downloadranger-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.
-rw-r--r--ranger/fsobject/directory.py4
-rw-r--r--ranger/fsobject/loader.py16
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