From 78ded61065848bf50a31a51ed4b20207ef56bf65 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 29 Aug 2012 07:58:36 +0000 Subject: texture curves were not initialized (causing crash), own regression from moving curve initialization outside evaluation. --- source/blender/nodes/intern/node_util.c | 6 ++++++ source/blender/nodes/intern/node_util.h | 1 + source/blender/nodes/shader/nodes/node_shader_curves.c | 10 ++-------- source/blender/nodes/texture/nodes/node_texture_curves.c | 2 ++ 4 files changed, 11 insertions(+), 8 deletions(-) (limited to 'source') diff --git a/source/blender/nodes/intern/node_util.c b/source/blender/nodes/intern/node_util.c index 8f9214fa1b2..27258c45fe5 100644 --- a/source/blender/nodes/intern/node_util.c +++ b/source/blender/nodes/intern/node_util.c @@ -73,6 +73,12 @@ void node_copy_standard_storage(bNode *orig_node, bNode *new_node) new_node->storage= MEM_dupallocN(orig_node->storage); } +void *node_initexec_curves(bNode *node) +{ + curvemapping_initialize(node->storage); + return NULL; /* unused return */ +} + /**** Labels ****/ const char *node_blend_label(bNode *node) diff --git a/source/blender/nodes/intern/node_util.h b/source/blender/nodes/intern/node_util.h index 6f167e35262..9f9caef14e2 100644 --- a/source/blender/nodes/intern/node_util.h +++ b/source/blender/nodes/intern/node_util.h @@ -53,6 +53,7 @@ extern void node_free_standard_storage(struct bNode *node); extern void node_copy_curves(struct bNode *orig_node, struct bNode *new_node); extern void node_copy_standard_storage(struct bNode *orig_node, struct bNode *new_node); +extern void *node_initexec_curves(struct bNode *node); /**** Labels ****/ diff --git a/source/blender/nodes/shader/nodes/node_shader_curves.c b/source/blender/nodes/shader/nodes/node_shader_curves.c index 8831b07d8a0..83cb1d33628 100644 --- a/source/blender/nodes/shader/nodes/node_shader_curves.c +++ b/source/blender/nodes/shader/nodes/node_shader_curves.c @@ -45,12 +45,6 @@ static bNodeSocketTemplate sh_node_curve_vec_out[]= { { -1, 0, "" } }; -static void *node_shader_initexec_curve(bNode *node) -{ - curvemapping_initialize(node->storage); - return NULL; /* unused return */ -} - static void node_shader_exec_curve_vec(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) { float vec[3]; @@ -86,7 +80,7 @@ void register_node_type_sh_curve_vec(bNodeTreeType *ttype) node_type_init(&ntype, node_shader_init_curve_vec); node_type_storage(&ntype, "CurveMapping", node_free_curves, node_copy_curves); node_type_exec(&ntype, node_shader_exec_curve_vec); - node_type_exec_new(&ntype, node_shader_initexec_curve, NULL, NULL); /* only for its initexec func */ + node_type_exec_new(&ntype, node_initexec_curves, NULL, NULL); /* only for its initexec func */ node_type_gpu(&ntype, gpu_shader_curve_vec); nodeRegisterType(ttype, &ntype); @@ -144,7 +138,7 @@ void register_node_type_sh_curve_rgb(bNodeTreeType *ttype) node_type_init(&ntype, node_shader_init_curve_rgb); node_type_storage(&ntype, "CurveMapping", node_free_curves, node_copy_curves); node_type_exec(&ntype, node_shader_exec_curve_rgb); - node_type_exec_new(&ntype, node_shader_initexec_curve, NULL, NULL); /* only for its initexec func */ + node_type_exec_new(&ntype, node_initexec_curves, NULL, NULL); /* only for its initexec func */ node_type_gpu(&ntype, gpu_shader_curve_rgb); nodeRegisterType(ttype, &ntype); diff --git a/source/blender/nodes/texture/nodes/node_texture_curves.c b/source/blender/nodes/texture/nodes/node_texture_curves.c index 543b39ec75e..6ccb5e1e83f 100644 --- a/source/blender/nodes/texture/nodes/node_texture_curves.c +++ b/source/blender/nodes/texture/nodes/node_texture_curves.c @@ -77,6 +77,7 @@ void register_node_type_tex_curve_time(bNodeTreeType *ttype) node_type_init(&ntype, time_init); node_type_storage(&ntype, "CurveMapping", node_free_curves, node_copy_curves); node_type_exec(&ntype, time_exec); + node_type_exec_new(&ntype, node_initexec_curves, NULL, NULL); /* only for its initexec func */ nodeRegisterType(ttype, &ntype); } @@ -121,6 +122,7 @@ void register_node_type_tex_curve_rgb(bNodeTreeType *ttype) node_type_init(&ntype, rgb_init); node_type_storage(&ntype, "CurveMapping", node_free_curves, node_copy_curves); node_type_exec(&ntype, rgb_exec); + node_type_exec_new(&ntype, node_initexec_curves, NULL, NULL); /* only for its initexec func */ nodeRegisterType(ttype, &ntype); } -- cgit v1.2.3