forked from bartvdbraak/blender
Cycles: Fix memory leak in shader graph when bump graph is used
This commit is contained in:
parent
0b78b8f167
commit
5d564da3b6
@ -210,8 +210,7 @@ ShaderGraph::ShaderGraph()
|
||||
|
||||
ShaderGraph::~ShaderGraph()
|
||||
{
|
||||
foreach(ShaderNode *node, nodes)
|
||||
delete node;
|
||||
clear_nodes();
|
||||
}
|
||||
|
||||
ShaderNode *ShaderGraph::add(ShaderNode *node)
|
||||
@ -240,7 +239,7 @@ ShaderGraph *ShaderGraph::copy()
|
||||
copy_nodes(nodes_all, nodes_copy);
|
||||
|
||||
/* add nodes (in same order, so output is still first) */
|
||||
newgraph->nodes.clear();
|
||||
newgraph->clear_nodes();
|
||||
foreach(ShaderNode *node, nodes)
|
||||
newgraph->add(nodes_copy[node]);
|
||||
|
||||
@ -354,6 +353,14 @@ void ShaderGraph::find_dependencies(ShaderNodeSet& dependencies, ShaderInput *in
|
||||
}
|
||||
}
|
||||
|
||||
void ShaderGraph::clear_nodes()
|
||||
{
|
||||
foreach(ShaderNode *node, nodes) {
|
||||
delete node;
|
||||
}
|
||||
nodes.clear();
|
||||
}
|
||||
|
||||
void ShaderGraph::copy_nodes(ShaderNodeSet& nodes, ShaderNodeMap& nnodemap)
|
||||
{
|
||||
/* copy a set of nodes, and the links between them. the assumption is
|
||||
|
@ -323,6 +323,7 @@ protected:
|
||||
typedef pair<ShaderNode* const, ShaderNode*> NodePair;
|
||||
|
||||
void find_dependencies(ShaderNodeSet& dependencies, ShaderInput *input);
|
||||
void clear_nodes();
|
||||
void copy_nodes(ShaderNodeSet& nodes, ShaderNodeMap& nnodemap);
|
||||
|
||||
void break_cycles(ShaderNode *node, vector<bool>& visited, vector<bool>& on_stack);
|
||||
|
Loading…
Reference in New Issue
Block a user