Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheryl Chen <chnchryl>2018-03-16 01:36:15 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-03-16 02:58:10 +0300
commit07b07e53ea0831ffb0c2a3aff0a33b40aa935c5c (patch)
tree5b153798035c43add93383718fffc430da0ee44b /source/blender/render
parente56fd59f22cb45ed4780b443b7245483dd5509ad (diff)
Fix T53971: single layer render showing the wrong render layer in image editor.
Original patch Cheryl Chen, extra fixes by Brecht. Differential Revision: https://developer.blender.org/D3098
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/extern/include/RE_pipeline.h2
-rw-r--r--source/blender/render/intern/source/pipeline.c24
2 files changed, 20 insertions, 6 deletions
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h
index bb056675887..de71b8d1023 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -236,6 +236,8 @@ void RE_render_result_rect_from_ibuf(
struct RenderLayer *RE_GetRenderLayer(struct RenderResult *rr, const char *name);
float *RE_RenderLayerGetPass(volatile struct RenderLayer *rl, const char *name, const char *viewname);
+bool RE_HasSingleLayer(struct Render *re);
+
/* add passes for grease pencil */
struct RenderPass *RE_create_gp_pass(struct RenderResult *rr, const char *layername, const char *viewname);
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 7cab5f43aca..e17a503cd4e 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -257,6 +257,11 @@ RenderLayer *RE_GetRenderLayer(RenderResult *rr, const char *name)
}
}
+bool RE_HasSingleLayer(Render *re)
+{
+ return (re->r.scemode & R_SINGLE_LAYER);
+}
+
RenderResult *RE_MultilayerConvert(void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
{
return render_result_new_from_exr(exrhandle, colorspace, predivide, rectx, recty);
@@ -264,12 +269,19 @@ RenderResult *RE_MultilayerConvert(void *exrhandle, const char *colorspace, bool
RenderLayer *render_get_active_layer(Render *re, RenderResult *rr)
{
- RenderLayer *rl = BLI_findlink(&rr->layers, re->r.actlay);
-
- if (rl)
- return rl;
- else
- return rr->layers.first;
+ SceneRenderLayer *srl = BLI_findlink(&re->r.layers, re->r.actlay);
+
+ if (srl) {
+ RenderLayer *rl = BLI_findstring(&rr->layers,
+ srl->name,
+ offsetof(RenderLayer, name));
+
+ if (rl) {
+ return rl;
+ }
+ }
+
+ return rr->layers.first;
}
static int render_scene_needs_vector(Render *re)