[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30948] trunk/blender/source/blender: Fix preview render crash after recent G.main changes.

Brecht Van Lommel brecht at blender.org
Sun Aug 1 22:36:24 CEST 2010


Revision: 30948
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30948
Author:   blendix
Date:     2010-08-01 22:36:24 +0200 (Sun, 01 Aug 2010)

Log Message:
-----------
Fix preview render crash after recent G.main changes.

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/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-01 16:38:30 UTC (rev 30947)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2010-08-01 20:36:24 UTC (rev 30948)
@@ -94,6 +94,7 @@
 
 typedef struct BakeRender {
 	Render *re;
+	Main *main;
 	Scene *scene;
 	struct Object *actob;
 	int tot, ready;
@@ -139,6 +140,7 @@
 	Scene *scene= CTX_data_scene(C);
 
 	bkr->sa= biggest_image_area(CTX_wm_screen(C)); /* can be NULL */
+	bkr->main= CTX_data_main(C);
 	bkr->scene= scene;
 	bkr->actob= (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL;
 	bkr->re= RE_NewRender("_Bake View_");
@@ -196,6 +198,7 @@
 {
 	BakeRender *bkr= bkv;
 	Scene *scene= bkr->scene;
+	Main *bmain= bkr->main;
 
 	bkr->stop= stop;
 	bkr->do_update= do_update;
@@ -204,7 +207,7 @@
 	RE_test_break_cb(bkr->re, NULL, thread_break);
 	G.afbreek= 0;	/* blender_test_break uses this global */
 
-	RE_Database_Baking(bkr->re, scene, scene->lay, scene->r.bake_mode, bkr->actob);
+	RE_Database_Baking(bkr->re, bmain, scene, scene->lay, scene->r.bake_mode, bkr->actob);
 
 	/* baking itself is threaded, cannot use test_break in threads. we also update optional imagewindow */
 	bkr->tot= RE_bake_shade_all_selected(bkr->re, scene->r.bake_mode, bkr->actob, bkr->do_update, bkr->progress);
@@ -284,6 +287,7 @@
 
 static int bake_image_exec(bContext *C, wmOperator *op)
 {
+	Main *bmain= CTX_data_main(C);
 	Scene *scene= CTX_data_scene(C);
 
 
@@ -302,7 +306,7 @@
 		RE_test_break_cb(bkr.re, NULL, thread_break);
 		G.afbreek= 0;	/* blender_test_break uses this global */
 
-		RE_Database_Baking(bkr.re, scene, scene->lay, scene->r.bake_mode, (scene->r.bake_flag & R_BAKE_TO_ACTIVE)? OBACT: NULL);
+		RE_Database_Baking(bkr.re, bmain, scene, scene->lay, scene->r.bake_mode, (scene->r.bake_flag & R_BAKE_TO_ACTIVE)? OBACT: NULL);
 
 		/* baking itself is threaded, cannot use test_break in threads  */
 		BLI_init_threads(&threads, do_bake_render, 1);

Modified: trunk/blender/source/blender/editors/render/render_preview.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_preview.c	2010-08-01 16:38:30 UTC (rev 30947)
+++ trunk/blender/source/blender/editors/render/render_preview.c	2010-08-01 20:36:24 UTC (rev 30948)
@@ -975,7 +975,7 @@
 		((Camera *)sce->camera->data)->lens *= (float)sp->sizey/(float)sizex;
 
 	/* entire cycle for render engine */
-	RE_PreviewRender(re, sce);
+	RE_PreviewRender(re, G.main, sce);
 
 	((Camera *)sce->camera->data)->lens= oldlens;
 

Modified: trunk/blender/source/blender/render/extern/include/RE_pipeline.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2010-08-01 16:38:30 UTC (rev 30947)
+++ trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2010-08-01 20:36:24 UTC (rev 30948)
@@ -213,7 +213,7 @@
 void RE_BlenderAnim(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, int sfra, int efra, int tfra, struct ReportList *reports);
 
 /* main preview render call */
-void RE_PreviewRender(struct Render *re, struct Scene *scene);
+void RE_PreviewRender(struct Render *re, struct Main *bmain, struct Scene *scene);
 
 void RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode);
 void RE_WriteRenderResult(RenderResult *rr, char *filename, int compress);
@@ -249,7 +249,7 @@
 #define RE_BAKE_DISPLACEMENT	5
 #define RE_BAKE_SHADOW			6
 
-void RE_Database_Baking(struct Render *re, struct Scene *scene, unsigned int lay, int type, struct Object *actob);
+void RE_Database_Baking(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, int type, struct Object *actob);
 
 void RE_DataBase_GetView(struct Render *re, float mat[][4]);
 void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[][4]);

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2010-08-01 16:38:30 UTC (rev 30947)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2010-08-01 20:36:24 UTC (rev 30948)
@@ -5560,12 +5560,13 @@
    RE_BAKE_DISPLACEMENT:for baking, no lamps, only selected objects
    RE_BAKE_SHADOW: for baking, only shadows, but all objects
 */
-void RE_Database_Baking(Render *re, Scene *scene, unsigned int lay, int type, Object *actob)
+void RE_Database_Baking(Render *re, Main *bmain, Scene *scene, unsigned int lay, int type, Object *actob)
 {
 	float mat[4][4];
 	float amb[3];
 	int onlyselected, nolamps;
 	
+	re->main= bmain;
 	re->scene= scene;
 	re->lay= lay;
 

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2010-08-01 16:38:30 UTC (rev 30947)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2010-08-01 20:36:24 UTC (rev 30948)
@@ -2975,7 +2975,7 @@
 	G.rendering= 0;
 }
 
-void RE_PreviewRender(Render *re, Scene *sce)
+void RE_PreviewRender(Render *re, Main *bmain, Scene *sce)
 {
 	int winx, winy;
 
@@ -2984,6 +2984,7 @@
 
 	RE_InitState(re, NULL, &sce->r, NULL, winx, winy, NULL);
 
+	re->main = bmain;
 	re->scene = sce;
 	re->lay = sce->lay;
 





More information about the Bf-blender-cvs mailing list