[Bf-blender-cvs] [70e3f86] asset-engine: Some more small fixes regarding ID/library asset handling.

Bastien Montagne noreply at git.blender.org
Sun Jul 24 18:13:47 CEST 2016


Commit: 70e3f86809c71c55eeb31ca7e1d8ce6c9ccd1b88
Author: Bastien Montagne
Date:   Sun Jul 17 11:37:56 2016 +0200
Branches: asset-engine
https://developer.blender.org/rB70e3f86809c71c55eeb31ca7e1d8ce6c9ccd1b88

Some more small fixes regarding ID/library asset handling.

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

M	source/blender/blenkernel/intern/library.c
M	source/blender/blenkernel/intern/library_asset.c

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

diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index 81d93f9..44c34c7 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -132,6 +132,10 @@
  * also note that the id _must_ have a library - campbell */
 void BKE_id_lib_local_paths(Main *bmain, Library *lib, ID *id)
 {
+	if (lib->flag & LIBRARY_FLAG_VIRTUAL) {
+		return;
+	}
+
 	const char *bpath_user_data[2] = {bmain->name, lib->filepath};
 
 	BKE_bpath_traverse_id(bmain, id,
@@ -142,7 +146,7 @@ void BKE_id_lib_local_paths(Main *bmain, Library *lib, ID *id)
 
 void id_lib_extern(ID *id)
 {
-	if (id && ID_IS_LINKED_DATABLOCK(id)) {
+	if (id && ID_IS_LINKED(id)) {
 		BLI_assert(BKE_idcode_is_linkable(GS(id->name)));
 		if (id->tag & LIB_TAG_INDIRECT) {
 			id->tag -= LIB_TAG_INDIRECT;
diff --git a/source/blender/blenkernel/intern/library_asset.c b/source/blender/blenkernel/intern/library_asset.c
index a1c31ba..9ee6a2e 100644
--- a/source/blender/blenkernel/intern/library_asset.c
+++ b/source/blender/blenkernel/intern/library_asset.c
@@ -143,11 +143,18 @@ void BKE_libraries_asset_subdata_remove(Main *bmain, const void *idv)
 		return;
 	}
 
-	ListBase *lb = which_libbase(bmain, ID_LI);
+	ListBase *lb = &bmain->library;
 	for (Library *lib = lb->first; lib; lib = lib->id.next) {
 		if (lib->asset_repository) {
 			for (AssetRef *aref = lib->asset_repository->assets.first; aref; aref = aref->next) {
-				BLI_freelinkN(&aref->id_list, BLI_findptr(&aref->id_list, idv, offsetof(LinkData, data)));
+				LinkData *subdata = aref->id_list.first;
+				/* Skip first one, it's main asset, not subdata! */
+				for (subdata = subdata->next; subdata; subdata = subdata->next) {
+					if (subdata->data == idv) {
+						BLI_freelinkN(&aref->id_list, subdata);
+						break;
+					}
+				}
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list