Revision: 19110
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19110
Author:   ton
Date:     2009-02-25 10:54:41 +0100 (Wed, 25 Feb 2009)

Log Message:
-----------
2.5

Bugfix in compositor: code that duplicated the nodetree and merged
viewer images back lacked handling the case when a viewer was not
set active yet.

This fixes eternal loops in compositor after removing Viewers.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/image.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/node.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/image.c        
2009-02-25 09:36:25 UTC (rev 19109)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/image.c        
2009-02-25 09:54:41 UTC (rev 19110)
@@ -351,12 +351,16 @@
 {
        ImBuf *ibuf;
        
-       while((ibuf= source->ibufs.first)) {
-               BLI_remlink(&source->ibufs, ibuf);
-               image_assign_ibuf(dest, ibuf, IMA_INDEX_PASS(ibuf->index), 
IMA_INDEX_FRAME(ibuf->index));
+       /* sanity check */
+       if(dest && source && dest!=source) {
+       
+               while((ibuf= source->ibufs.first)) {
+                       BLI_remlink(&source->ibufs, ibuf);
+                       image_assign_ibuf(dest, ibuf, 
IMA_INDEX_PASS(ibuf->index), IMA_INDEX_FRAME(ibuf->index));
+               }
+               
+               free_libblock(&G.main->image, source);
        }
-       
-       free_libblock(&G.main->image, source);
 }
 
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/node.c 
2009-02-25 09:36:25 UTC (rev 19109)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/node.c 
2009-02-25 09:54:41 UTC (rev 19110)
@@ -2490,8 +2490,11 @@
                node->need_exec= 0;
                
                if(ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) {
-                       if(node->id && (node->flag & NODE_DO_OUTPUT)) {
-                               node->new_node->id= (ID *)BKE_image_copy((Image 
*)node->id);
+                       if(node->id) {
+                               if(node->flag & NODE_DO_OUTPUT)
+                                       node->new_node->id= (ID 
*)BKE_image_copy((Image *)node->id);
+                               else
+                                       node->new_node->id= NULL;
                        }
                }
                
@@ -2565,6 +2568,7 @@
                        
                        if(ELEM(lnode->type, CMP_NODE_VIEWER, 
CMP_NODE_SPLITVIEWER)) {
                                if(lnode->id && (lnode->flag & NODE_DO_OUTPUT)) 
{
+                                       /* image_merge does sanity check for 
pointers */
                                        BKE_image_merge((Image 
*)lnode->new_node->id, (Image *)lnode->id);
                                }
                        }


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

Reply via email to