[Bf-blender-cvs] [b3be710] asset-engine: Some tweaks to flags & versionning handling for assets update check.

Bastien Montagne noreply at git.blender.org
Wed Apr 27 13:15:49 CEST 2016


Commit: b3be710e1933f3a2fb01ab67dfd8f05ffbb77a21
Author: Bastien Montagne
Date:   Wed Apr 27 13:13:00 2016 +0200
Branches: asset-engine
https://developer.blender.org/rBb3be710e1933f3a2fb01ab67dfd8f05ffbb77a21

Some tweaks to flags & versionning handling for assets update check.

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

M	release/scripts/startup/bl_operators/amber.py
M	source/blender/windowmanager/intern/wm_files_link.c

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

diff --git a/release/scripts/startup/bl_operators/amber.py b/release/scripts/startup/bl_operators/amber.py
index 2cb7c6d..7db2972 100644
--- a/release/scripts/startup/bl_operators/amber.py
+++ b/release/scripts/startup/bl_operators/amber.py
@@ -253,7 +253,7 @@ class AmberTag(PropertyGroup):
 
 class AssetEngineAmber(AssetEngine):
     bl_label = "Amber"
-    bl_version = 1
+    bl_version = (0 << 16) + (0 << 8) + 2  # Usual maj.min.rev version scheme...
 
     tags = CollectionProperty(name="Tags", type=AmberTag, description="Filtering tags")
     active_tag_index = IntProperty(name="Active Tag", options={'HIDDEN'})
@@ -341,6 +341,11 @@ class AssetEngineAmber(AssetEngine):
             entry.relpath = act_rev["path"]
 #        print("added entry for", entry.relpath)
 
+    def pretty_version(self, v=None):
+        if v is None:
+            v = self.bl_version
+        return "%d.%d.%d" % ((v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF)
+
     ########## PY-API only ##########
     # UI header
     def draw_header(self, layout, context):
@@ -443,12 +448,20 @@ class AssetEngineAmber(AssetEngine):
 
     def update_check(self, job_id, uuids):
         # do nothing for now, no need to use actual job...
+        if uuids.asset_engine_version != self.bl_version:
+            print("Updating asset uuids from Amber v.%s to amber v.%s" %
+                  (self.pretty_version(uuids.asset_engine_version), self.pretty_version()))
+        # We could also check for uuid.is_asset_missing (in case our .blend lib files would be cached locally and
+        # gone missing e.g.).
         for uuid in uuids.uuids:
             uuid.use_asset_reload = True
         return self.job_id_invalid
 
     def load_pre(self, uuids, entries):
         # Not quite sure this engine will need it in the end, but for sake of testing...
+        if uuids.asset_engine_version != self.bl_version:
+            print("Updating asset uuids from Amber v.%s to amber v.%s" %
+                  (self.pretty_version(uuids.asset_engine_version), self.pretty_version()))
         if self.repo:
 #            print(entries.entries[:])
             for uuid in uuids.uuids:
diff --git a/source/blender/windowmanager/intern/wm_files_link.c b/source/blender/windowmanager/intern/wm_files_link.c
index 86f63e1..174bc3b 100644
--- a/source/blender/windowmanager/intern/wm_files_link.c
+++ b/source/blender/windowmanager/intern/wm_files_link.c
@@ -588,6 +588,8 @@ static void asset_updatecheck_update(void *aucjv)
 
 	*aucj->progress = 0.0f;
 
+	/* TODO need to take care of 'broken' engines that error - in this case we probably want to cancel the whole
+	 * update process over effected libraries' data... */
 	for (AssetUpdateCheckEngine *auce = aucj->engines.first; auce; auce = auce->next, nbr_engines++) {
 		AssetEngine *ae = auce->ae;
 		AssetEngineType *ae_type = ae->type;
@@ -618,6 +620,10 @@ static void asset_updatecheck_update(void *aucjv)
 						continue;
 					}
 
+					/* UUIDs returned by update_check are assumed to be valid (one way or the other) in current
+					 * asset engine version. */
+					lib->asset_repository->asset_engine_version = ae_type->version;
+
 					int i = auce->uuids.nbr_uuids;
 					for (AssetUUID *uuid = auce->uuids.uuids; i--; uuid++) {
 						bool done = false;
@@ -754,7 +760,7 @@ static void asset_updatecheck_start(const bContext *C)
 
 					if (id->uuid) {
 						printf("\tWe need to check for updated asset %s...\n", id->name);
-						id->uuid->tag = 0;
+						id->uuid->tag = (id->tag & LIB_TAG_MISSING) ? UUID_TAG_ASSET_MISSING : 0;
 
 						/* XXX horrible, need to use some mempool, stack or something :) */
 						auce->uuids.nbr_uuids++;




More information about the Bf-blender-cvs mailing list