From 70e3f86809c71c55eeb31ca7e1d8ce6c9ccd1b88 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Sun, 17 Jul 2016 11:37:56 +0200 Subject: Some more small fixes regarding ID/library asset handling. --- source/blender/blenkernel/intern/library.c | 6 +++++- source/blender/blenkernel/intern/library_asset.c | 11 +++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 81d93f94c70..44c34c781ea 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 a1c31ba9097..9ee6a2e426e 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; + } + } } } } -- cgit v1.2.3