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;
        }
 }
 

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to