[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59691] branches/soc-2013-depsgraph_mt/ source/blender/blenkernel/intern/depsgraph.c: Quick followup for the previous commit to prevent crashes when having dependency cycles .

Sergey Sharybin sergey.vfx at gmail.com
Sat Aug 31 13:01:55 CEST 2013


Revision: 59691
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59691
Author:   nazgul
Date:     2013-08-31 11:01:55 +0000 (Sat, 31 Aug 2013)
Log Message:
-----------
Quick followup for the previous commit to prevent crashes when having dependency cycles.

Modified Paths:
--------------
    branches/soc-2013-depsgraph_mt/source/blender/blenkernel/intern/depsgraph.c

Modified: branches/soc-2013-depsgraph_mt/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- branches/soc-2013-depsgraph_mt/source/blender/blenkernel/intern/depsgraph.c	2013-08-31 11:01:50 UTC (rev 59690)
+++ branches/soc-2013-depsgraph_mt/source/blender/blenkernel/intern/depsgraph.c	2013-08-31 11:01:55 UTC (rev 59691)
@@ -2830,16 +2830,25 @@
 static void tag_flush_recurs(DagNode *node)
 {
 	DagAdjList *itA;
+	int color = node->color;
 
+	/* Quick hack for recursion detection. */
+	if (node->color == DAG_GRAY) {
+		return;
+	}
+	node->color = DAG_GRAY;
+
 	for (itA = node->child; itA; itA = itA->next) {
 		if (itA->node != node) {
 			tag_flush_recurs(itA->node);
 
 			if (itA->node->color == DAG_WHITE) {
-				node->color = DAG_WHITE;
+				color = DAG_WHITE;
 			}
 		}
 	}
+
+	node->color = color;
 }
 
 void DAG_tag_flush_nodes(Scene *scene)




More information about the Bf-blender-cvs mailing list