[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31288] trunk/blender/source/blender: Fix #23238: crash rendering multiple scenes from compositor.

Brecht Van Lommel brecht at blender.org
Thu Aug 12 15:58:10 CEST 2010


Revision: 31288
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31288
Author:   blendix
Date:     2010-08-12 15:58:10 +0200 (Thu, 12 Aug 2010)

Log Message:
-----------
Fix #23238: crash rendering multiple scenes from compositor.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_bake.c
    trunk/blender/source/blender/editors/render/render_preview.c
    trunk/blender/source/blender/render/extern/include/RE_pipeline.h
    trunk/blender/source/blender/render/intern/include/renderdatabase.h
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c	2010-08-12 13:41:59 UTC (rev 31287)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2010-08-12 13:58:10 UTC (rev 31288)
@@ -230,6 +230,7 @@
 
 	if(bkr->tot==0) BKE_report(bkr->reports, RPT_ERROR, "No Images found to bake to");
 	MEM_freeN(bkr);
+	G.rendering = 0;
 }
 
 /* catch esc */
@@ -269,6 +270,7 @@
 		WM_jobs_callbacks(steve, bake_startjob, NULL, bake_update, NULL);
 
 		G.afbreek= 0;
+		G.rendering = 1;
 
 		WM_jobs_start(CTX_wm_manager(C), steve);
 

Modified: trunk/blender/source/blender/editors/render/render_preview.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_preview.c	2010-08-12 13:41:59 UTC (rev 31287)
+++ trunk/blender/source/blender/editors/render/render_preview.c	2010-08-12 13:58:10 UTC (rev 31288)
@@ -791,7 +791,7 @@
 				lay |= v3d->lay;
 			else lay= v3d->lay;
 			
-			RE_Database_FromScene(re, scene, lay, 0);		// 0= dont use camera view
+			RE_Database_FromScene(re, bmain, scene, lay, 0);		// 0= dont use camera view
 			
 			rstats= RE_GetStats(re);
 			if(rstats->convertdone) 

Modified: trunk/blender/source/blender/render/extern/include/RE_pipeline.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2010-08-12 13:41:59 UTC (rev 31287)
+++ trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2010-08-12 13:58:10 UTC (rev 31288)
@@ -193,7 +193,7 @@
 void RE_SetView (struct Render *re, float mat[][4]);
 
 /* make or free the dbase */
-void RE_Database_FromScene(struct Render *re, struct Scene *scene, unsigned int lay, int use_camera_view);
+void RE_Database_FromScene(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, int use_camera_view);
 void RE_Database_Free (struct Render *re);
 
 /* project dbase again, when viewplane/perspective changed */

Modified: trunk/blender/source/blender/render/intern/include/renderdatabase.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/renderdatabase.h	2010-08-12 13:41:59 UTC (rev 31287)
+++ trunk/blender/source/blender/render/intern/include/renderdatabase.h	2010-08-12 13:58:10 UTC (rev 31288)
@@ -34,6 +34,7 @@
 struct VlakRen;
 struct VertRen;
 struct HaloRen;
+struct Main;
 struct Material;
 struct Render;
 struct MCol;
@@ -137,7 +138,7 @@
 
 /* convertblender.c */
 void init_render_world(Render *re);
-void RE_Database_FromScene_Vectors(Render *re, struct Scene *sce, unsigned int lay);
+void RE_Database_FromScene_Vectors(Render *re, struct Main *bmain, struct Scene *sce, unsigned int lay);
 
 
 #endif /* RENDERDATABASE_H */

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2010-08-12 13:41:59 UTC (rev 31287)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2010-08-12 13:58:10 UTC (rev 31288)
@@ -4889,13 +4889,14 @@
 }
 
 /* used to be 'rotate scene' */
-void RE_Database_FromScene(Render *re, Scene *scene, unsigned int lay, int use_camera_view)
+void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view)
 {
 	extern int slurph_opt;	/* key.c */
 	Scene *sce;
 	float mat[4][4];
 	float amb[3];
 
+	re->main= bmain;
 	re->scene= scene;
 	re->lay= lay;
 	
@@ -5433,7 +5434,7 @@
 	BLI_freelistN(lb);
 }
 
-void RE_Database_FromScene_Vectors(Render *re, Scene *sce, unsigned int lay)
+void RE_Database_FromScene_Vectors(Render *re, Main *bmain, Scene *sce, unsigned int lay)
 {
 	ObjectInstanceRen *obi, *oldobi;
 	StrandSurface *mesh;
@@ -5475,7 +5476,7 @@
 	re->strandsurface= strandsurface;
 	
 	if(!re->test_break(re->tbh))
-		RE_Database_FromScene(re, sce, lay, 1);
+		RE_Database_FromScene(re, bmain, sce, lay, 1);
 	
 	if(!re->test_break(re->tbh)) {
 		for(step= 0; step<2; step++) {

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2010-08-12 13:41:59 UTC (rev 31287)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2010-08-12 13:58:10 UTC (rev 31288)
@@ -1768,9 +1768,9 @@
 	
 	/* make render verts/faces/halos/lamps */
 	if(render_scene_needs_vector(re))
-		RE_Database_FromScene_Vectors(re, re->scene, re->lay);
+		RE_Database_FromScene_Vectors(re, re->main, re->scene, re->lay);
 	else
-	   RE_Database_FromScene(re, re->scene, re->lay, 1);
+	   RE_Database_FromScene(re, re->main, re->scene, re->lay, 1);
 	
 	threaded_tile_processor(re);
 	
@@ -2142,6 +2142,7 @@
 	RE_InitState(resc, re, &sce->r, NULL, winx, winy, &re->disprect);
 	
 	/* still unsure entity this... */
+	resc->main= re->main;
 	resc->scene= sce;
 	resc->lay= sce->lay;
 	





More information about the Bf-blender-cvs mailing list