Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2016-07-11 20:09:46 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2016-07-11 22:30:02 +0300
commit439ccca1e0b7078f3055ec14a7c81e964594ae6b (patch)
treeda408560ee0fb5963eee1ed5bd496b571ce3e019
parent62ea383622d8cb9ae284217bd040d93a6d123859 (diff)
Add an exception/hack to new BKE_id_expand_local(), to ignore actions datablock in its usercount handling.
Reason is, typically those actions datablock usercounts have already been adjusted in BKE_animdata_copy() (called by generic iddata copy function). Think this needs to be reworked a bit too, there are way too much ways to copy animdata currently, it's rather confusing. But not the goal here, so for now we'll live with the hack!
-rw-r--r--source/blender/blenkernel/intern/library.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index fc584e172a1..678ac662ae3 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -257,7 +257,11 @@ static int id_expand_local_callback(void *user_data, struct ID *UNUSED(id_self),
/* We tag all ID usages as extern, and increase usercount in case it was requested. */
if (*id_pointer) {
- if (do_user_count && (cd_flag & IDWALK_USER)) {
+ if (do_user_count && (cd_flag & IDWALK_USER) &&
+ /* XXX This is a hack - animdata copying needs a good check and cleanup, it's done with way too much
+ * various functions currently, so for now we assume actions' usercount is already handled here... */
+ (GS((*id_pointer)->name) != ID_AC))
+ {
id_us_plus(*id_pointer);
}
else {