Commit: dd2e33b24d79c22859479bd2ee38f030f2b7be52
Author: Sergey Sharybin
Date:   Wed Feb 22 16:46:00 2017 +0100
Branches: blender-v2.78c-release
https://developer.blender.org/rBdd2e33b24d79c22859479bd2ee38f030f2b7be52

Blender 2.78c: Fix crash with material preview and image sequences

Don't use built-in API for image sequences since it's not really
finished in RNA API.

Fixes issue reported in T50616.

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

M       intern/cycles/blender/blender_shader.cpp
M       source/blender/blenkernel/intern/image.c

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

diff --git a/intern/cycles/blender/blender_shader.cpp 
b/intern/cycles/blender/blender_shader.cpp
index f63f94ab37..78f0cc1fc8 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -609,7 +609,8 @@ static ShaderNode *add_node(Scene *scene,
                        bool is_builtin = b_image.packed_file() ||
                                          b_image.source() == 
BL::Image::source_GENERATED ||
                                          b_image.source() == 
BL::Image::source_MOVIE ||
-                                         b_engine.is_preview();
+                                         (b_engine.is_preview() &&
+                                          b_image.source() != 
BL::Image::source_SEQUENCE);
 
                        if(is_builtin) {
                                /* for builtin images we're using image 
datablock name to find an image to
@@ -661,7 +662,8 @@ static ShaderNode *add_node(Scene *scene,
                        bool is_builtin = b_image.packed_file() ||
                                          b_image.source() == 
BL::Image::source_GENERATED ||
                                          b_image.source() == 
BL::Image::source_MOVIE ||
-                                         b_engine.is_preview();
+                                         (b_engine.is_preview() &&
+                                          b_image.source() != 
BL::Image::source_SEQUENCE);
 
                        if(is_builtin) {
                                int scene_frame = b_scene.frame_current();
diff --git a/source/blender/blenkernel/intern/image.c 
b/source/blender/blenkernel/intern/image.c
index 8a9cb73c8c..0ffcaffb91 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -3178,7 +3178,7 @@ static ImBuf *load_sequence_single(Image *ima, ImageUser 
*iuser, int frame, cons
        struct ImBuf *ibuf;
        char name[FILE_MAX];
        int flag;
-       ImageUser iuser_t;
+       ImageUser iuser_t = {0};
 
        /* XXX temp stuff? */
        if (ima->lastframe != frame)
@@ -3186,8 +3186,12 @@ static ImBuf *load_sequence_single(Image *ima, ImageUser 
*iuser, int frame, cons
 
        ima->lastframe = frame;
 
-       if (iuser)
+       if (iuser) {
                iuser_t = *iuser;
+       }
+       else {
+               /* TODO(sergey): Do we need to initialize something here? */
+       }
 
        iuser_t.view = view_id;
        BKE_image_user_file_path(&iuser_t, ima, name);

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

Reply via email to