[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36306] trunk/blender/source/blender/ blenkernel/intern/node.c: Another fix for node groups: Internal socket stack did not get complete initialization of the sockettype value , leading to wrong b/w outputs.

Lukas Toenne lukas.toenne at googlemail.com
Sun Apr 24 07:13:36 CEST 2011


Revision: 36306
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36306
Author:   lukastoenne
Date:     2011-04-24 05:13:35 +0000 (Sun, 24 Apr 2011)
Log Message:
-----------
Another fix for node groups: Internal socket stack did not get complete initialization of the sockettype value, leading to wrong b/w outputs.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/node.c

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c	2011-04-24 01:35:29 UTC (rev 36305)
+++ trunk/blender/source/blender/blenkernel/intern/node.c	2011-04-24 05:13:35 UTC (rev 36306)
@@ -2244,16 +2244,40 @@
 			}
 		}
 		
+		/* non-composite trees do all nodes by default */
+		if (ntree->type!=NTREE_COMPOSIT)
+			node->need_exec = 1;
+		
+		for(sock= node->inputs.first; sock; sock= sock->next) {
+			bNodeStack *ns = get_socket_stack(stack, sock, gin);
+			if (ns) {
+				ns->hasoutput = 1;
+				
+				/* sock type is needed to detect rgba or value or vector types */
+				if(sock->link && sock->link->fromsock)
+					ns->sockettype= sock->link->fromsock->type;
+				else
+					sock->ns.sockettype= sock->type;
+			}
+			
+			if(sock->link) {
+				bNodeLink *link= sock->link;
+				/* this is the test for a cyclic case */
+				if(link->fromnode && link->tonode) {
+					if(link->fromnode->level >= link->tonode->level && link->tonode->level!=0xFFF);
+					else {
+						node->need_exec= 0;
+					}
+				}
+			}
+		}
+		
 		/* set stack types (for local stack entries) */
 		for(sock= node->outputs.first; sock; sock= sock->next) {
-			bNodeStack *ns = get_socket_stack(stack, sock, NULL);
+			bNodeStack *ns = get_socket_stack(stack, sock, gin);
 			if (ns)
 				ns->sockettype = sock->type;
 		}
-		
-		/* non-composite trees do all nodes by default */
-		if (ntree->type!=NTREE_COMPOSIT)
-			node->need_exec = 1;
 	}
 }
 




More information about the Bf-blender-cvs mailing list