[Bf-blender-cvs] [3715b8d] depsgraph_refactor: Depsgraph: Correction to previous commit, it's unsafe to cast nodes

Sergey Sharybin noreply at git.blender.org
Thu Dec 18 15:03:15 CET 2014


Commit: 3715b8d1d09d8b163cfea9ad22d92c89cc6e2368
Author: Sergey Sharybin
Date:   Thu Dec 18 19:02:06 2014 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rB3715b8d1d09d8b163cfea9ad22d92c89cc6e2368

Depsgraph: Correction to previous commit, it's unsafe to cast nodes

We shouldn't cast time source node to operation node and access the flag.

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

M	source/blender/depsgraph/intern/depsgraph_eval.cpp

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

diff --git a/source/blender/depsgraph/intern/depsgraph_eval.cpp b/source/blender/depsgraph/intern/depsgraph_eval.cpp
index 2e9e02b..8ccb6e5 100644
--- a/source/blender/depsgraph/intern/depsgraph_eval.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_eval.cpp
@@ -111,22 +111,28 @@ void DEG_threaded_exit(void)
 
 static void calculate_pending_parents(Depsgraph *graph)
 {
-	for (Depsgraph::OperationNodes::const_iterator it_op = graph->operations.begin(); it_op != graph->operations.end(); ++it_op) {
+	for (Depsgraph::OperationNodes::const_iterator it_op = graph->operations.begin();
+	     it_op != graph->operations.end();
+	     ++it_op)
+	{
 		OperationDepsNode *node = *it_op;
-		
+
 		node->num_links_pending = 0;
 		node->scheduled = false;
-		
+
 		/* count number of inputs that need updates */
 		if (node->flag & DEPSOP_FLAG_NEEDS_UPDATE) {
-			for (OperationDepsNode::Relations::const_iterator it_rel = node->inlinks.begin(); it_rel != node->inlinks.end(); ++it_rel) {
+			for (OperationDepsNode::Relations::const_iterator it_rel = node->inlinks.begin();
+			     it_rel != node->inlinks.end();
+			     ++it_rel)
+		{
 				DepsRelation *rel = *it_rel;
-				OperationDepsNode *from = (OperationDepsNode *)rel->from;
-				
-				BLI_assert(ELEM(rel->from->type, DEPSNODE_TYPE_OPERATION,
-				                                 DEPSNODE_TYPE_TIMESOURCE));
-				if (from->flag & DEPSOP_FLAG_NEEDS_UPDATE)
-					++node->num_links_pending;
+				if (rel->from->type == DEPSNODE_TYPE_OPERATION) {
+					OperationDepsNode *from = (OperationDepsNode *)rel->from;
+					if (from->flag & DEPSOP_FLAG_NEEDS_UPDATE) {
+						++node->num_links_pending;
+					}
+				}
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list