Commit: baf585cdc529366fc2542a3b163c1d5a09c640c7 Author: Lukas Tönne Date: Tue Apr 5 11:04:44 2016 +0200 Branches: object_nodes https://developer.blender.org/rBbaf585cdc529366fc2542a3b163c1d5a09c640c7
Retain functions both for storage in the cache as well as keeping the pointer during eval. Otherwise the function is freed immediately after each use, making the cache pointless. =================================================================== M source/blender/blenvm/intern/bvm_api.cc M source/blender/blenvm/intern/function_cache.cc =================================================================== diff --git a/source/blender/blenvm/intern/bvm_api.cc b/source/blender/blenvm/intern/bvm_api.cc index 36b7367..b89cbc9 100644 --- a/source/blender/blenvm/intern/bvm_api.cc +++ b/source/blender/blenvm/intern/bvm_api.cc @@ -98,7 +98,9 @@ void BVM_free(void) using namespace blenvm; blenvm::function_bvm_cache_clear(); +#ifdef WITH_LLVM blenvm::function_llvm_cache_clear(); +#endif nodes_free(); @@ -435,6 +437,8 @@ struct BVMFunction *BVM_gen_forcefield_function_bvm(bNodeTree *btree, bool use_c } } + fn->retain(fn); + bvm_lock.unlock(); return (BVMFunction *)fn; @@ -1019,6 +1023,8 @@ struct BVMFunction *BVM_gen_texture_function_bvm(bNodeTree *btree, bool use_cach } } + fn->retain(fn); + bvm_lock.unlock(); return (BVMFunction *)fn; @@ -1050,6 +1056,8 @@ struct BVMFunction *BVM_gen_texture_function_llvm(bNodeTree *btree, bool use_cac } } + fn->retain(fn); + llvm_lock.unlock(); return (BVMFunction *)fn; @@ -1163,6 +1171,8 @@ struct BVMFunction *BVM_gen_modifier_function_bvm(struct bNodeTree *btree, bool } } + fn->retain(fn); + bvm_lock.unlock(); return (BVMFunction *)fn; @@ -1251,6 +1261,8 @@ struct BVMFunction *BVM_gen_dupli_function_bvm(struct bNodeTree *btree, bool use } } + fn->retain(fn); + bvm_lock.unlock(); return (BVMFunction *)fn; diff --git a/source/blender/blenvm/intern/function_cache.cc b/source/blender/blenvm/intern/function_cache.cc index 840d9c7..82760e0 100644 --- a/source/blender/blenvm/intern/function_cache.cc +++ b/source/blender/blenvm/intern/function_cache.cc @@ -53,7 +53,6 @@ struct FunctionCache { function_type *fn = NULL; if (it != m_functions.end()) { fn = it->second; - function_type::retain(fn); } return fn; } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs