[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49680] trunk/blender/source/blender/ compositor/nodes/COM_MuteNode.cpp: Fix crash in cases when render layers node is muted

Sergey Sharybin sergey.vfx at gmail.com
Wed Aug 8 10:15:57 CEST 2012


Revision: 49680
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49680
Author:   nazgul
Date:     2012-08-08 08:15:56 +0000 (Wed, 08 Aug 2012)
Log Message:
-----------
Fix crash in cases when render layers node is muted

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

Modified: trunk/blender/source/blender/compositor/nodes/COM_MuteNode.cpp
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_MuteNode.cpp	2012-08-08 07:31:19 UTC (rev 49679)
+++ trunk/blender/source/blender/compositor/nodes/COM_MuteNode.cpp	2012-08-08 08:15:56 UTC (rev 49680)
@@ -110,6 +110,7 @@
 	 */
 	if ((editorNode->flag & NODE_MUTED) && editorNode->typeinfo->internal_connect) {
 		vector<InputSocket *> &inputsockets = this->getInputSockets();
+		vector<OutputSocket *> relinkedsockets;
 		bNodeTree *editorTree = (bNodeTree *) context->getbNodeTree();
 		SocketMap socketMap;
 		ListBase intlinks;
@@ -132,10 +133,37 @@
 					else {
 						createDefaultOutput(graph, toSocket);
 					}
+
+					relinkedsockets.push_back(toSocket);
 				}
 			}
 		}
 
+		/* in some cases node could be marked as muted, but it wouldn't have internal connections
+		 * this happens in such cases as muted render layer node
+		 *
+		 * to deal with such cases create default operation for not-relinked output sockets
+		 */
+
+		for (unsigned int index = 0; index < outputsockets.size(); index++) {
+			OutputSocket *output = outputsockets[index];
+
+			if (output->isConnected()) {
+				bool relinked = false;
+				vector<OutputSocket *>::iterator it;
+
+				for (it = relinkedsockets.begin(); it != relinkedsockets.end(); it++) {
+					if (*it == output) {
+						relinked = true;
+						break;
+					}
+				}
+
+				if (!relinked)
+					createDefaultOutput(graph, output);
+			}
+		}
+
 		BLI_freelistN(&intlinks);
 	}
 	else {




More information about the Bf-blender-cvs mailing list