[Bf-blender-cvs] [60783fd] asset-engine: Amber: only list dirs from real filesystem.

Bastien Montagne noreply at git.blender.org
Sun Mar 15 20:36:26 CET 2015


Commit: 60783fd64e6c7e9522186885102f081629545e0d
Author: Bastien Montagne
Date:   Sun Mar 15 16:20:38 2015 +0100
Branches: asset-engine
https://developer.blender.org/rB60783fd64e6c7e9522186885102f081629545e0d

Amber: only list dirs from real filesystem.

Actual data (assets) are to be 'listed' by another way!

Also, fix mem leak.

===================================================================

M	release/scripts/startup/bl_operators/amber.py
M	source/blender/blenkernel/intern/asset.c

===================================================================

diff --git a/release/scripts/startup/bl_operators/amber.py b/release/scripts/startup/bl_operators/amber.py
index 2a564b7..16539b0 100644
--- a/release/scripts/startup/bl_operators/amber.py
+++ b/release/scripts/startup/bl_operators/amber.py
@@ -49,13 +49,13 @@ class AmberJobList(AmberJob):
     @staticmethod
     def ls(path):
         ret = [".."] + os.listdir(path)
-        time.sleep(0.1)  # 100% Artificial Lag (c)
+        #~ time.sleep(0.1)  # 100% Artificial Lag (c)
         return ret
 
     @staticmethod
-    def stat(path):
-        st = os.lstat(path)
-        time.sleep(0.1)  # 100% Artificial Lag (c)
+    def stat(root, path):
+        st = os.lstat(root + path)
+        #~ time.sleep(0.1)  # 100% Artificial Lag (c)
         return path, (stat.S_ISDIR(st.st_mode), st.st_size, st.st_mtime)
 
     def start(self):
@@ -72,7 +72,7 @@ class AmberJobList(AmberJob):
             self.ls_task = None
             self.tot = len(paths)
             for p in paths:
-                self.stat_tasks.add(self.executor.submit(self.stat, self.root + p))
+                self.stat_tasks.add(self.executor.submit(self.stat, self.root, p))
         else:
             done = set()
             for tsk in self.stat_tasks:
@@ -80,17 +80,19 @@ class AmberJobList(AmberJob):
                     path, (is_dir, size, timestamp) = tsk.result()
                     self.nbr += 1
 
-                    entry = entries.entries.add()
-                    entry.type = {'DIR'} if is_dir else {'BLENDER'}  # TODO stupid!
-                    entry.relpath = path
-                    entry.uuid = entry.relpath.encode()[:8] + b"|" + bytes(self.nbr)
-                    uuids[entry.uuid] = self.root + path
-                    variant = entry.variants.add()
-                    entry.variants.active = variant
-                    rev = variant.revisions.add()
-                    rev.size = size
-                    rev.timestamp = timestamp
-                    variant.revisions.active = rev
+                    if is_dir:
+                        # We only list dirs from real file system.
+                        entry = entries.entries.add()
+                        entry.type = {'DIR'}
+                        entry.relpath = path
+                        entry.uuid = entry.relpath.encode()[:8] + b"|" + bytes(self.nbr)
+                        uuids[entry.uuid] = self.root + path
+                        variant = entry.variants.add()
+                        entry.variants.active = variant
+                        rev = variant.revisions.add()
+                        rev.size = size
+                        rev.timestamp = timestamp
+                        variant.revisions.active = rev
 
                     done.add(tsk)
             self.stat_tasks -= done
@@ -155,8 +157,8 @@ class AssetEngineAmber(AssetEngine):
 
     def list_dir(self, job_id, entries):
         job = self.jobs.get(job_id, None)
+        print(entries.root_path, job_id, job)
         if job is not None and isinstance(job, AmberJobList):
-            print(job.root, entries.root_path)
             if job.root != entries.root_path:
                 self.jobs[job_id] = AmberJobList(self.executor, job_id, entries.root_path)
             else:
diff --git a/source/blender/blenkernel/intern/asset.c b/source/blender/blenkernel/intern/asset.c
index 12b35ec..458fa47 100644
--- a/source/blender/blenkernel/intern/asset.c
+++ b/source/blender/blenkernel/intern/asset.c
@@ -169,6 +169,7 @@ void BKE_asset_engine_load_pre(AssetEngine *engine, FileDirEntryArr *r_entries)
 			BKE_filedir_entryarr_clear(r_entries);
 		}
 
+		MEM_freeN(uuids->uuids);
 		MEM_freeN(uuids);
 	}
 }




More information about the Bf-blender-cvs mailing list