[Bf-blender-cvs] [c2556d9] depsgraph_refactor: Entry/Exit operations for components now get set when creating those operation nodes

Joshua Leung noreply at git.blender.org
Tue Dec 30 10:26:21 CET 2014


Commit: c2556d90d25a89f2b646568cf1463fb388e5457f
Author: Joshua Leung
Date:   Tue Dec 30 14:09:53 2014 +1300
Branches: depsgraph_refactor
https://developer.blender.org/rBc2556d90d25a89f2b646568cf1463fb388e5457f

Entry/Exit operations for components now get set when creating those operation nodes

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

M	source/blender/depsgraph/intern/depsgraph_build.cpp
M	source/blender/depsgraph/intern/depsnode_component.cpp

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

diff --git a/source/blender/depsgraph/intern/depsgraph_build.cpp b/source/blender/depsgraph/intern/depsgraph_build.cpp
index c99ea5a..4674fcf 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build.cpp
@@ -233,8 +233,6 @@ OperationDepsNode *DepsgraphNodeBuilder::add_operation_node(ID *id, eDepsNode_Ty
 	OperationDepsNode *op_node = comp_node->add_operation(optype, op, opcode, description);
 	m_graph->operations.push_back(op_node);
 	
-	// TODO: mark as entry/exit if appropriate
-	
 	return op_node;
 }
 
diff --git a/source/blender/depsgraph/intern/depsnode_component.cpp b/source/blender/depsgraph/intern/depsnode_component.cpp
index 2b39e45..54a25dd 100644
--- a/source/blender/depsgraph/intern/depsnode_component.cpp
+++ b/source/blender/depsgraph/intern/depsnode_component.cpp
@@ -124,12 +124,29 @@ OperationDepsNode *ComponentDepsNode::add_operation(eDepsOperation_Type optype,
 		DepsNodeFactory *factory = DEG_get_node_factory(DEPSNODE_TYPE_OPERATION);
 		op_node = (OperationDepsNode *)factory->create_node(this->owner->id, "", name);
 		
-		/* register */
+		/* register opnode in this component's operation set */
 		OperationIDKey key(opcode, name);
 		this->operations[key] = op_node;
 		
+		/* set as entry/exit node of component (if appropriate) */
+		if (optype == DEPSOP_TYPE_INIT) {
+			BLI_assert(this->entry_operation == NULL);
+			this->entry_operation = op_node;
+		}
+		else if (optype == DEPSOP_TYPE_POST) {
+			// XXX: review whether DEPSOP_TYPE_OUT is better than DEPSOP_TYPE_POST, or maybe have both?
+			BLI_assert(this->exit_operation == NULL);
+			this->exit_operation = op_node;
+		}
+		
+		/* set backlink */
 		op_node->owner = this;
 	}
+	else {
+		/* we have a duplicate node! */
+		fprintf(stderr, "add_operation: Operation already exists - %s has %s at %p\n",
+		        this->identifier().c_str(), op_node->identifier().c_str(), op_node);
+	}
 	
 	/* attach extra data */
 	op_node->evaluate = op;




More information about the Bf-blender-cvs mailing list