Commit: a70a7f9db368deefeb6d07e1c4e6c84f1ebad59a
Author: Sergey Sharybin
Date:   Tue May 16 12:40:04 2017 +0200
Branches: master
https://developer.blender.org/rBa70a7f9db368deefeb6d07e1c4e6c84f1ebad59a

Fix T49864: EnvMap baking crashes 2.78 if 'Full Sample' checked in AA

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

M       source/blender/imbuf/intern/openexr/openexr_api.cpp
M       source/blender/render/intern/source/envmap.c

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

diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp 
b/source/blender/imbuf/intern/openexr/openexr_api.cpp
index 89e796fb7ee..29332a5c899 100644
--- a/source/blender/imbuf/intern/openexr/openexr_api.cpp
+++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp
@@ -1026,15 +1026,16 @@ void IMB_exr_set_channel(void *handle, const char 
*layname, const char *passname
        ExrChannel *echan;
        char name[EXR_TOT_MAXNAME + 1];
 
-       if (layname) {
+       if (layname && layname[0] != '\0') {
                char lay[EXR_LAY_MAXNAME + 1], pass[EXR_PASS_MAXNAME + 1];
                BLI_strncpy(lay, layname, EXR_LAY_MAXNAME);
                BLI_strncpy(pass, passname, EXR_PASS_MAXNAME);
 
                BLI_snprintf(name, sizeof(name), "%s.%s", lay, pass);
        }
-       else
+       else {
                BLI_strncpy(name, passname, EXR_TOT_MAXNAME - 1);
+       }
 
        echan = (ExrChannel *)BLI_findstring(&data->channels, name, 
offsetof(ExrChannel, name));
 
@@ -1043,8 +1044,9 @@ void IMB_exr_set_channel(void *handle, const char 
*layname, const char *passname
                echan->ystride = ystride;
                echan->rect = rect;
        }
-       else
+       else {
                printf("IMB_exr_set_channel error %s\n", name);
+       }
 }
 
 float  *IMB_exr_channel_rect(void *handle, const char *layname, const char 
*passname, const char *viewname)
diff --git a/source/blender/render/intern/source/envmap.c 
b/source/blender/render/intern/source/envmap.c
index b100c4f66bc..156b4215992 100644
--- a/source/blender/render/intern/source/envmap.c
+++ b/source/blender/render/intern/source/envmap.c
@@ -61,6 +61,7 @@
 #include "renderpipeline.h"
 #include "texture.h"
 #include "zbuf.h"
+#include "render_result.h"
 
 /* ------------------------------------------------------------------------- */
 
@@ -493,11 +494,18 @@ static void render_envmap(Render *re, EnvMap *env)
                env_rotate_scene(envre, tmat, 0);
 
                if (re->test_break(re->tbh) == 0) {
-                       RenderLayer *rl = envre->result->layers.first;
                        int y;
                        float *alpha;
                        float *rect;
 
+                       if (envre->result->do_exr_tile) {
+                               BLI_rw_mutex_lock(&envre->resultmutex, 
THREAD_LOCK_WRITE);
+                               render_result_exr_file_end(envre);
+                               BLI_rw_mutex_unlock(&envre->resultmutex);
+                       }
+
+                       RenderLayer *rl = envre->result->layers.first;
+
                        /* envmap is rendered independently of multiview  */
                        rect = RE_RenderLayerGetPass(rl, RE_PASSNAME_COMBINED, 
"");
                        ibuf = IMB_allocImBuf(envre->rectx, envre->recty, 24, 
IB_rect | IB_rectfloat);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to