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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-04-13 16:12:54 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-04-13 16:12:54 +0400
commit44258c3c9a7e279832e8b01975f9ba7b91e15688 (patch)
tree2df1840660a382b9985bc7a0b3ab8af25537ff45
parent3578a93eb830002b41925a769e180bad77764ed2 (diff)
Fix #30876, #30932: crash in material preview render after undo or file load,
due to old material copies hanging around in the preview database. This crash happened pretty randomly, but was especially noticeable when using node groups.
-rw-r--r--source/blender/editors/render/render_preview.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 27e1486c4f3..67ece561c98 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -987,20 +987,19 @@ static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short
IconPreviewSize *cur_size = ip->sizes.first;
while (cur_size) {
- ShaderPreview sp;
-
- memset(&sp, 0, sizeof(ShaderPreview));
+ ShaderPreview *sp = MEM_callocN(sizeof(ShaderPreview), "Icon ShaderPreview");
/* construct shader preview from image size and previewcustomdata */
- sp.scene = ip->scene;
- sp.owner = ip->owner;
- sp.sizex = cur_size->sizex;
- sp.sizey = cur_size->sizey;
- sp.pr_method = PR_ICON_RENDER;
- sp.pr_rect = cur_size->rect;
- sp.id = ip->id;
-
- common_preview_startjob(&sp, stop, do_update, progress);
+ sp->scene = ip->scene;
+ sp->owner = ip->owner;
+ sp->sizex = cur_size->sizex;
+ sp->sizey = cur_size->sizey;
+ sp->pr_method = PR_ICON_RENDER;
+ sp->pr_rect = cur_size->rect;
+ sp->id = ip->id;
+
+ common_preview_startjob(sp, stop, do_update, progress);
+ shader_preview_free(sp);
cur_size = cur_size->next;
}