[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19110] branches/blender2.5/blender/source /blender/blenkernel/intern: 2.5

Ton Roosendaal ton at blender.org
Wed Feb 25 10:54:43 CET 2009


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





More information about the Bf-blender-cvs mailing list