[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46454] trunk/blender/source/blender/ render/intern/source/pipeline.c: Fix #31349: Composite node is not found when part of a group.

Sergey Sharybin sergey.vfx at gmail.com
Wed May 9 11:02:07 CEST 2012


Revision: 46454
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46454
Author:   nazgul
Date:     2012-05-09 09:02:06 +0000 (Wed, 09 May 2012)
Log Message:
-----------
Fix #31349: Composite node is not found when part of a group.

Made smarter check for composite output node which now checks if there are
composite output nodes in group nodes.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2012-05-09 08:33:11 UTC (rev 46453)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2012-05-09 09:02:06 UTC (rev 46454)
@@ -1805,6 +1805,28 @@
 	return 1;
 }
 
+static int node_tree_has_composite_output(bNodeTree *ntree)
+{
+	bNode *node;
+
+	for (node = ntree->nodes.first; node; node = node->next) {
+		if (node->type == CMP_NODE_COMPOSITE) {
+			return TRUE;
+		}
+		else if (node->type == NODE_GROUP) {
+			if (node_tree_has_composite_output((bNodeTree *)node->id))
+				return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
+static int check_composite_output(Scene *scene)
+{
+	return node_tree_has_composite_output(scene->nodetree);
+}
+
 int RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *reports)
 {
 	SceneRenderLayer *srl;
@@ -1839,19 +1861,12 @@
 	
 	if (scene->r.scemode & R_DOCOMP) {
 		if (scene->use_nodes) {
-			bNodeTree *ntree= scene->nodetree;
-			bNode *node;
-		
-			if (ntree==NULL) {
+			if (!scene->nodetree) {
 				BKE_report(reports, RPT_ERROR, "No Nodetree in Scene");
 				return 0;
 			}
 			
-			for (node= ntree->nodes.first; node; node= node->next)
-				if (node->type==CMP_NODE_COMPOSITE)
-					break;
-			
-			if (node==NULL) {
+			if (!check_composite_output(scene)) {
 				BKE_report(reports, RPT_ERROR, "No Render Output Node in Scene");
 				return 0;
 			}




More information about the Bf-blender-cvs mailing list