[Bf-blender-cvs] [c123b31db37] temp-render-depsgraph: Move render ViewLayer iterator outside render_result_new

Dalai Felinto noreply at git.blender.org
Mon Feb 26 15:37:30 CET 2018


Commit: c123b31db37588e375971b2ce10c2ad5f9176ab6
Author: Dalai Felinto
Date:   Mon Feb 26 10:43:24 2018 -0300
Branches: temp-render-depsgraph
https://developer.blender.org/rBc123b31db37588e375971b2ce10c2ad5f9176ab6

Move render ViewLayer iterator outside render_result_new

===================================================================

M	source/blender/render/intern/include/render_result.h
M	source/blender/render/intern/source/render_result.c

===================================================================

diff --git a/source/blender/render/intern/include/render_result.h b/source/blender/render/intern/include/render_result.h
index 8d293c938c7..b2c5758f506 100644
--- a/source/blender/render/intern/include/render_result.h
+++ b/source/blender/render/intern/include/render_result.h
@@ -117,5 +117,28 @@ void render_result_views_shallowcopy(struct RenderResult *dst, struct RenderResu
 void render_result_views_shallowdelete(struct RenderResult *rr);
 bool render_result_has_views(struct RenderResult *rr);
 
+#define FOREACH_VIEW_LAYER_TO_RENDER(re_, iter_)          \
+{                                                         \
+	int nr;                                               \
+	ViewLayer *iter_;                                     \
+	for (nr = 0, iter_ = (re_)->view_layers.first;        \
+	     iter_ != NULL;                                   \
+         iter_ = iter_->next, nr++)                       \
+	{                                                     \
+		if ((re_)->r.scemode & R_SINGLE_LAYER) {          \
+			if (nr != re->active_view_layer) {            \
+				continue;                                 \
+			}                                             \
+		}                                                 \
+		else {                                            \
+			if ((iter_->flag & VIEW_LAYER_RENDER) == 0) { \
+				continue;                                 \
+			}                                             \
+		}
+
+#define FOREACH_VIEW_LAYER_TO_RENDER_END                  \
+	}                                                     \
+}
+
 #endif /* __RENDER_RESULT_H__ */
 
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index f97c8fb0b06..126d675a491 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -266,9 +266,7 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
 	RenderResult *rr;
 	RenderLayer *rl;
 	RenderView *rv;
-	ViewLayer *view_layer;
 	int rectx, recty;
-	int nr;
 	
 	rectx = BLI_rcti_size_x(partrct);
 	recty = BLI_rcti_size_y(partrct);
@@ -296,23 +294,14 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
 	render_result_views_new(rr, &re->r);
 
 	/* check renderdata for amount of layers */
-	for (nr = 0, view_layer = re->view_layers.first; view_layer; view_layer = view_layer->next, nr++) {
-
-		if (layername && layername[0])
-			if (!STREQ(view_layer->name, layername))
-				continue;
-
-		if (re->r.scemode & R_SINGLE_LAYER) {
-			if (nr != re->active_view_layer) {
-				continue;
-			}
-		}
-		else {
-			if ((view_layer->flag & VIEW_LAYER_RENDER) == 0) {
+	FOREACH_VIEW_LAYER_TO_RENDER(re, view_layer)
+	{
+		if (layername && layername[0]) {
+			if (!STREQ(view_layer->name, layername)) {
 				continue;
 			}
 		}
-		
+
 		rl = MEM_callocN(sizeof(RenderLayer), "new render layer");
 		BLI_addtail(&rr->layers, rl);
 		
@@ -417,6 +406,8 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
 #undef RENDER_LAYER_ADD_PASS_SAFE
 		}
 	}
+	FOREACH_VIEW_LAYER_TO_RENDER_END
+
 	/* sss, previewrender and envmap don't do layers, so we make a default one */
 	if (BLI_listbase_is_empty(&rr->layers) && !(layername && layername[0])) {
 		rl = MEM_callocN(sizeof(RenderLayer), "new render layer");



More information about the Bf-blender-cvs mailing list