[Bf-blender-cvs] [00f7220] master: Fix for missing visits of Freestyle-related ID data blocks in BKE_library_foreach_ID_link().

Tamito Kajiyama noreply at git.blender.org
Fri Jun 6 05:49:12 CEST 2014


Commit: 00f722042c07e847bebb2d19ae4d6a486b6fb1ab
Author: Tamito Kajiyama
Date:   Fri Jun 6 12:44:48 2014 +0900
https://developer.blender.org/rB00f722042c07e847bebb2d19ae4d6a486b6fb1ab

Fix for missing visits of Freestyle-related ID data blocks in BKE_library_foreach_ID_link().

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

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 e9bdc36..178209f 100644
--- a/source/blender/blenkernel/intern/library_query.c
+++ b/source/blender/blenkernel/intern/library_query.c
@@ -47,6 +47,7 @@
 #include "DNA_mask_types.h"
 #include "DNA_node_types.h"
 #include "DNA_object_force.h"
+#include "DNA_scene_types.h"
 #include "DNA_sequence_types.h"
 #include "DNA_screen_types.h"
 #include "DNA_speaker_types.h"
@@ -168,6 +169,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 		case ID_SCE:
 		{
 			Scene *scene = (Scene *) id;
+			SceneRenderLayer *srl;
 			Base *base;
 
 			CALLBACK_INVOKE(scene->camera, IDWALK_NOP);
@@ -178,6 +180,25 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 			}
 			CALLBACK_INVOKE(scene->obedit, IDWALK_NOP);
 
+			for (srl = scene->r.layers.first; srl; srl = srl->next) {
+				FreestyleModuleConfig *fmc;
+				FreestyleLineSet *fls;
+
+				for (fmc = srl->freestyleConfig.modules.first; fmc; fmc = fmc->next) {
+					if (fmc->script) {
+						CALLBACK_INVOKE(fmc->script, IDWALK_NOP);
+					}
+				}
+				for (fls = srl->freestyleConfig.linesets.first; fls; fls = fls->next) {
+					if (fls->group) {
+						CALLBACK_INVOKE(fls->group, IDWALK_NOP);
+					}
+					if (fls->linestyle) {
+						CALLBACK_INVOKE(fls->linestyle, IDWALK_NOP);
+					}
+				}
+			}
+
 			if (scene->ed) {
 				Sequence *seq;
 				SEQP_BEGIN(scene->ed, seq)
@@ -455,12 +476,38 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
 		case ID_LS:
 		{
 			FreestyleLineStyle *linestyle = (FreestyleLineStyle *) id;
+			LineStyleModifier *m;
 			for (i = 0; i < MAX_MTEX; i++) {
 				if (linestyle->mtex[i]) {
 					library_foreach_mtex(&data, linestyle->mtex[i]);
 				}
 			}
 			CALLBACK_INVOKE(linestyle->nodetree, IDWALK_NOP);
+
+			for (m = (LineStyleModifier *)linestyle->color_modifiers.first; m; m = m->next) {
+				if (m->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) {
+					LineStyleColorModifier_DistanceFromObject *p = (LineStyleColorModifier_DistanceFromObject *)m;
+					if (p->target) {
+						CALLBACK_INVOKE(p->target, IDWALK_NOP);
+					}
+				}
+			}
+			for (m = (LineStyleModifier *)linestyle->alpha_modifiers.first; m; m = m->next) {
+				if (m->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) {
+					LineStyleAlphaModifier_DistanceFromObject *p = (LineStyleAlphaModifier_DistanceFromObject *)m;
+					if (p->target) {
+						CALLBACK_INVOKE(p->target, IDWALK_NOP);
+					}
+				}
+			}
+			for (m = (LineStyleModifier *)linestyle->thickness_modifiers.first; m; m = m->next) {
+				if (m->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) {
+					LineStyleThicknessModifier_DistanceFromObject *p = (LineStyleThicknessModifier_DistanceFromObject *)m;
+					if (p->target) {
+						CALLBACK_INVOKE(p->target, IDWALK_NOP);
+					}
+				}
+			}
 			break;
 		}




More information about the Bf-blender-cvs mailing list