[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41392] branches/soc-2008-mxcurioni/source /blender/render/intern/source/pipeline.c: Fixed a crash due to invalid pointers to temporary scenes for stroke rendering .

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Sun Oct 30 23:53:24 CET 2011


Revision: 41392
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41392
Author:   kjym3
Date:     2011-10-30 22:53:24 +0000 (Sun, 30 Oct 2011)
Log Message:
-----------
Fixed a crash due to invalid pointers to temporary scenes for stroke rendering.

Freestyle generates a temporary scene containing a number of stroke meshes to
achieve stroke rendering using the Blender internal renderer.  This temporary
scene may appear in the outliner and undergo user interaction when the stroke
rendering takes a long time.  The crash was due to the deletion of the scene
without taking care of references to the scene from screens, one of which was
the outliner.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c

Modified: branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c	2011-10-30 22:46:59 UTC (rev 41391)
+++ branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c	2011-10-30 22:53:24 UTC (rev 41392)
@@ -2333,7 +2333,7 @@
 }
 
 /* releases temporary scenes and renders for Freestyle stroke rendering */
-static void free_all_freestyle_renders(void)
+static void free_all_freestyle_renders(Scene *scene)
 {
 	Render *re1, *freestyle_render;
 	LinkData *link;
@@ -2342,7 +2342,7 @@
 		for (link = (LinkData *)re1->freestyle_renders.first; link; link = link->next) {
 			if (link->data) {
 				freestyle_render = (Render *)link->data;
-				free_libblock(&G.main->scene, freestyle_render->scene);
+				unlink_scene(G.main, freestyle_render->scene, scene);
 				RE_FreeRender(freestyle_render);
 			}
 		}
@@ -2576,7 +2576,7 @@
 			do_merge_fullsample(re, NULL);
 	}
 
-	free_all_freestyle_renders();
+	free_all_freestyle_renders(re->scene);
 
 	/* weak... the display callback wants an active renderlayer pointer... */
 	re->result->renlay= render_get_active_layer(re, re->result);




More information about the Bf-blender-cvs mailing list