[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