[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49399] trunk/blender/source/blender/ compositor/nodes: Fixed own regression introduced in recent compositor commit

Sergey Sharybin sergey.vfx at gmail.com
Mon Jul 30 18:39:40 CEST 2012


Revision: 49399
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49399
Author:   nazgul
Date:     2012-07-30 16:39:39 +0000 (Mon, 30 Jul 2012)
Log Message:
-----------
Fixed own regression introduced in recent compositor commit

MuteNode could be used as a replacement for other nodes when
using fast calculation or when using unknown node from blender.

Should work properly now.

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/nodes/COM_MuteNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_MuteNode.h

Modified: trunk/blender/source/blender/compositor/nodes/COM_MuteNode.cpp
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_MuteNode.cpp	2012-07-30 16:07:37 UTC (rev 49398)
+++ trunk/blender/source/blender/compositor/nodes/COM_MuteNode.cpp	2012-07-30 16:39:39 UTC (rev 49399)
@@ -47,7 +47,12 @@
 			}
 		}
 	}
-	
+
+	createDefaultOutput(graph, output);
+}
+
+void MuteNode::createDefaultOutput(ExecutionSystem *graph, OutputSocket *output)
+{
 	NodeOperation *operation = NULL;
 	switch (output->getDataType()) {
 		case COM_DT_VALUE:
@@ -100,7 +105,10 @@
 	bNode *editorNode = this->getbNode();
 	vector<OutputSocket *> &outputsockets = this->getOutputSockets();
 
-	if (editorNode->typeinfo->internal_connect) {
+	/* mute node is also used for unknown nodes and couple of nodes in fast mode
+	 * can't use generic routines in that case
+	 */
+	if ((editorNode->flag & NODE_MUTED) && editorNode->typeinfo->internal_connect) {
 		vector<InputSocket *> &inputsockets = this->getInputSockets();
 		bNodeTree *editorTree = (bNodeTree *) context->getbNodeTree();
 		SocketMap socketMap;
@@ -117,7 +125,14 @@
 				InputSocket *fromSocket = (InputSocket *) socketMap.find(link->fromsock)->second;
 				OutputSocket *toSocket = (OutputSocket *) socketMap.find(link->tosock)->second;
 
-				toSocket->relinkConnections(fromSocket->getConnection()->getFromSocket(), false);
+				if (toSocket->isConnected()) {
+					if (fromSocket->isConnected()) {
+						toSocket->relinkConnections(fromSocket->getConnection()->getFromSocket(), false);
+					}
+					else {
+						createDefaultOutput(graph, toSocket);
+					}
+				}
 			}
 		}
 

Modified: trunk/blender/source/blender/compositor/nodes/COM_MuteNode.h
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_MuteNode.h	2012-07-30 16:07:37 UTC (rev 49398)
+++ trunk/blender/source/blender/compositor/nodes/COM_MuteNode.h	2012-07-30 16:39:39 UTC (rev 49399)
@@ -43,6 +43,7 @@
 	typedef std::map<bNodeSocket *, Socket *> SocketMap;
 
 	void reconnect(ExecutionSystem *graph, OutputSocket *output);
+	void createDefaultOutput(ExecutionSystem *graph, OutputSocket *output);
 
 	template<class SocketType> void fillSocketMap(vector<SocketType *> &sockets, SocketMap &socketMap);
 };




More information about the Bf-blender-cvs mailing list