[Bf-blender-cvs] [b0bce65] master: Add a bunch of missing IDs in ID looper...

Bastien Montagne noreply at git.blender.org
Thu Oct 8 15:06:23 CEST 2015


Commit: b0bce65d67ac65bef114cdf22e66f997b4028269
Author: Bastien Montagne
Date:   Thu Oct 8 14:38:48 2015 +0200
Branches: master
https://developer.blender.org/rBb0bce65d67ac65bef114cdf22e66f997b4028269

Add a bunch of missing IDs in ID looper...

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

M	source/blender/blenkernel/intern/library_query.c

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

diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c
index 75ba686..e7d96ba 100644
--- a/source/blender/blenkernel/intern/library_query.c
+++ b/source/blender/blenkernel/intern/library_query.c
@@ -174,12 +174,15 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 		case ID_SCE:
 		{
 			Scene *scene = (Scene *) id;
+			ToolSettings *toolsett = scene->toolsettings;
 			SceneRenderLayer *srl;
 			Base *base;
 
 			CALLBACK_INVOKE(scene->camera, IDWALK_NOP);
 			CALLBACK_INVOKE(scene->world, IDWALK_USER);
 			CALLBACK_INVOKE(scene->set, IDWALK_NOP);
+			CALLBACK_INVOKE(scene->clip, IDWALK_NOP);
+			CALLBACK_INVOKE(scene->nodetree, IDWALK_NOP);
 			if (scene->basact) {
 				CALLBACK_INVOKE(scene->basact->object, IDWALK_NOP);
 			}
@@ -218,6 +221,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 					CALLBACK_INVOKE(seq->scene_camera, IDWALK_NOP);
 					CALLBACK_INVOKE(seq->clip, IDWALK_USER);
 					CALLBACK_INVOKE(seq->mask, IDWALK_USER);
+					CALLBACK_INVOKE(seq->sound, IDWALK_USER);
 				}
 				SEQ_END
 			}
@@ -227,6 +231,34 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 			for (base = scene->base.first; base; base = base->next) {
 				CALLBACK_INVOKE(base->object, IDWALK_USER);
 			}
+
+			if (toolsett) {
+				CALLBACK_INVOKE(toolsett->skgen_template, IDWALK_NOP);
+				CALLBACK_INVOKE(toolsett->particle.scene, IDWALK_NOP);
+				CALLBACK_INVOKE(toolsett->particle.object, IDWALK_NOP);
+				CALLBACK_INVOKE(toolsett->particle.shape_object, IDWALK_NOP);
+				CALLBACK_INVOKE(toolsett->imapaint.stencil, IDWALK_NOP);
+				CALLBACK_INVOKE(toolsett->imapaint.clone, IDWALK_NOP);
+				CALLBACK_INVOKE(toolsett->imapaint.canvas, IDWALK_NOP);
+				if (toolsett->vpaint) {
+					CALLBACK_INVOKE(toolsett->vpaint->paint.brush, IDWALK_NOP);
+					CALLBACK_INVOKE(toolsett->vpaint->paint.palette, IDWALK_NOP);
+				}
+				if (toolsett->wpaint) {
+					CALLBACK_INVOKE(toolsett->wpaint->paint.brush, IDWALK_NOP);
+					CALLBACK_INVOKE(toolsett->wpaint->paint.palette, IDWALK_NOP);
+				}
+				if (toolsett->sculpt) {
+					CALLBACK_INVOKE(toolsett->sculpt->paint.brush, IDWALK_NOP);
+					CALLBACK_INVOKE(toolsett->sculpt->paint.palette, IDWALK_NOP);
+					CALLBACK_INVOKE(toolsett->sculpt->gravity_object, IDWALK_NOP);
+				}
+				if (toolsett->uvsculpt) {
+					CALLBACK_INVOKE(toolsett->uvsculpt->paint.brush, IDWALK_NOP);
+					CALLBACK_INVOKE(toolsett->uvsculpt->paint.palette, IDWALK_NOP);
+				}
+			}
+
 			break;
 		}
 
@@ -248,6 +280,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 
 			CALLBACK_INVOKE(object->parent, IDWALK_NOP);
 			CALLBACK_INVOKE(object->track, IDWALK_NOP);
+			/* object->proxy is refcounted, but not object->proxy_group... *sigh* */
 			CALLBACK_INVOKE(object->proxy, IDWALK_USER);
 			CALLBACK_INVOKE(object->proxy_group, IDWALK_NOP);
 			CALLBACK_INVOKE(object->proxy_from, IDWALK_NOP);
@@ -351,6 +384,16 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 			Tex *texture = (Tex *) id;
 			CALLBACK_INVOKE(texture->nodetree, IDWALK_NOP);
 			CALLBACK_INVOKE(texture->ima, IDWALK_USER);
+			if (texture->env) {
+				CALLBACK_INVOKE(texture->env->object, IDWALK_NOP);
+				CALLBACK_INVOKE(texture->env->ima, IDWALK_USER);
+			}
+			if (texture->pd)
+				CALLBACK_INVOKE(texture->pd->object, IDWALK_NOP);
+			if (texture->vd)
+				CALLBACK_INVOKE(texture->vd->object, IDWALK_NOP);
+			if (texture->ot)
+				CALLBACK_INVOKE(texture->ot->object, IDWALK_NOP);
 			break;
 		}
 
@@ -427,6 +470,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 		{
 			bNodeTree *ntree = (bNodeTree *) id;
 			bNode *node;
+			CALLBACK_INVOKE(ntree->gpd, IDWALK_USER);
 			for (node = ntree->nodes.first; node; node = node->next) {
 				CALLBACK_INVOKE_ID(node->id, IDWALK_USER);
 			}
@@ -437,6 +481,8 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 		{
 			Brush *brush = (Brush *) id;
 			CALLBACK_INVOKE(brush->toggle_brush, IDWALK_NOP);
+			CALLBACK_INVOKE(brush->clone.image, IDWALK_NOP);
+			CALLBACK_INVOKE(brush->paint_curve, IDWALK_USER);
 			library_foreach_mtex(&data, &brush->mtex);
 			library_foreach_mtex(&data, &brush->mask_mtex);
 			break;
@@ -448,9 +494,35 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 			CALLBACK_INVOKE(psett->dup_group, IDWALK_NOP);
 			CALLBACK_INVOKE(psett->dup_ob, IDWALK_NOP);
 			CALLBACK_INVOKE(psett->bb_ob, IDWALK_NOP);
+
+			for (i = 0; i < MAX_MTEX; i++) {
+				if (psett->mtex[i]) {
+					library_foreach_mtex(&data, psett->mtex[i]);
+				}
+			}
+
 			if (psett->effector_weights) {
 				CALLBACK_INVOKE(psett->effector_weights->group, IDWALK_NOP);
 			}
+
+			if (psett->boids) {
+				BoidState *state;
+				BoidRule *rule;
+
+				for (state = psett->boids->states.first; state; state = state->next) {
+					for (rule = state->rules.first; rule; rule = rule->next) {
+						if (rule->type == eBoidRuleType_Avoid) {
+							BoidRuleGoalAvoid *gabr = (BoidRuleGoalAvoid *)rule;
+							CALLBACK_INVOKE(gabr->ob, IDWALK_NOP);
+						}
+						else if (rule->type == eBoidRuleType_FollowLeader) {
+							BoidRuleFollowLeader *flbr = (BoidRuleFollowLeader *)rule;
+							CALLBACK_INVOKE(flbr->ob, IDWALK_NOP);
+						}
+					}
+				}
+			}
+
 			break;
 		}
 
@@ -549,4 +621,4 @@ void BKE_library_update_ID_link_user(ID *id_dst, ID *id_src, const int cd_flag)
 			id_us_plus(id_dst);
 		}
 	}
-}
\ No newline at end of file
+}




More information about the Bf-blender-cvs mailing list