[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13915] trunk/blender/source/blender/ blenkernel/intern/scene.c:

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Feb 29 14:29:18 CET 2008


Revision: 13915
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13915
Author:   blendix
Date:     2008-02-29 14:29:15 +0100 (Fri, 29 Feb 2008)

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

Fix for bug rendering scene layers from the compositor and scene sets,
two functions were both using the same LIB_DOIT flag, gave conflicts.

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

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2008-02-29 12:23:26 UTC (rev 13914)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2008-02-29 13:29:15 UTC (rev 13915)
@@ -503,27 +503,23 @@
 int scene_check_setscene(Scene *sce)
 {
 	Scene *scene;
+	int a, totscene;
 	
 	if(sce->set==NULL) return 1;
 	
-	/* LIB_DOIT is the free flag to tag library data */
+	totscene= 0;
 	for(scene= G.main->scene.first; scene; scene= scene->id.next)
-		scene->id.flag &= ~LIB_DOIT;
+		totscene++;
 	
-	scene= sce;
-	while(scene->set) {
-		scene->id.flag |= LIB_DOIT;
-		/* when set has flag set, we got a cycle */
-		if(scene->set->id.flag & LIB_DOIT)
-			break;
-		scene= scene->set;
+	for(a=0, scene=sce; scene->set; scene=scene->set, a++) {
+		/* more iterations than scenes means we have a cycle */
+		if(a > totscene) {
+			/* the tested scene gets zero'ed, that's typically current scene */
+			sce->set= NULL;
+			return 0;
+		}
 	}
-	
-	if(scene->set) {
-		/* the tested scene gets zero'ed, that's typically current scene */
-		sce->set= NULL;
-		return 0;
-	}
+
 	return 1;
 }
 





More information about the Bf-blender-cvs mailing list