[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45446] branches/soc-2008-mxcurioni/source /blender/render/intern/source/pipeline.c: Fix for a crash in the single layer mode with Freestyle enabled.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Fri Apr 6 15:49:52 CEST 2012


Revision: 45446
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45446
Author:   kjym3
Date:     2012-04-06 13:49:51 +0000 (Fri, 06 Apr 2012)
Log Message:
-----------
Fix for a crash in the single layer mode with Freestyle enabled.

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	2012-04-06 12:50:46 UTC (rev 45445)
+++ branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c	2012-04-06 13:49:51 UTC (rev 45446)
@@ -1387,21 +1387,24 @@
 	R.i.infostr= NULL;
 }
 
-
 /* invokes Freestyle stroke rendering */
 static void add_freestyle(Render *re)
 {
-	SceneRenderLayer *srl;
+	SceneRenderLayer *srl, *actsrl;
 	LinkData *link;
 
+	actsrl = BLI_findlink(&re->r.layers, re->r.actlay);
+
 	FRS_init_stroke_rendering(re);
 
-	for(srl= (SceneRenderLayer *)re->scene->r.layers.first; srl; srl= srl->next) {
+	for (srl= (SceneRenderLayer *)re->r.layers.first; srl; srl= srl->next) {
 
 		link = (LinkData *)MEM_callocN(sizeof(LinkData), "LinkData to Freestyle render");
 		BLI_addtail(&re->freestyle_renders, link);
 
-		if( FRS_is_freestyle_enabled(srl) ) {
+		if ((re->r.scemode & R_SINGLE_LAYER) && srl != actsrl)
+			continue;
+		if (FRS_is_freestyle_enabled(srl)) {
 			link->data = (void *)FRS_do_stroke_rendering(re, srl);
 		}
 	}
@@ -1413,12 +1416,16 @@
 static void composite_freestyle_renders(Render *re, int sample)
 {
 	Render *freestyle_render;
-	SceneRenderLayer *srl;
+	SceneRenderLayer *srl, *actsrl;
 	LinkData *link;
 
+	actsrl = BLI_findlink(&re->r.layers, re->r.actlay);
+
 	link = (LinkData *)re->freestyle_renders.first;
-	for(srl= (SceneRenderLayer *)re->scene->r.layers.first; srl; srl= srl->next) {
-		if( FRS_is_freestyle_enabled(srl) ) {
+	for (srl= (SceneRenderLayer *)re->r.layers.first; srl; srl= srl->next) {
+		if ((re->r.scemode & R_SINGLE_LAYER) && srl != actsrl)
+			continue;
+		if (FRS_is_freestyle_enabled(srl)) {
 			freestyle_render = (Render *)link->data;
 			render_result_exr_file_read(freestyle_render, sample);
 			FRS_composite_result(re, srl, freestyle_render);
@@ -1435,7 +1442,7 @@
 	Render *re1, *freestyle_render;
 	LinkData *link;
 
-	for(re1= RenderGlobal.renderlist.first; re1; re1= re1->next) {
+	for (re1= RenderGlobal.renderlist.first; re1; re1= re1->next) {
 		for (link = (LinkData *)re1->freestyle_renders.first; link; link = link->next) {
 			if (link->data) {
 				freestyle_render = (Render *)link->data;




More information about the Bf-blender-cvs mailing list