diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-06-18 13:30:59 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-06-18 13:32:40 +0300 |
commit | d67c07ea49ec06a547b8b4ec287642b83ea6d9c4 (patch) | |
tree | a03a9cf2c770b3dc63586b11bd375929ccd97062 /intern | |
parent | 7ac126e728a5b395a00bee6b7f657a843970492b (diff) |
Fix T48671: Cycles crash with OSL nodes and bump after recent refactoring.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/render/nodes.cpp | 7 | ||||
-rw-r--r-- | intern/cycles/render/nodes.h | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index a2e51713d65..bcaeaa9e6b4 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -4991,6 +4991,13 @@ OSLNode::~OSLNode() delete type; } +ShaderNode *OSLNode::clone() const +{ + OSLNode *node = new OSLNode(*this); + node->type = new NodeType(*type); + return node; +} + OSLNode* OSLNode::create(size_t num_inputs) { /* allocate space for the node itself and parameters, aligned to 16 bytes diff --git a/intern/cycles/render/nodes.h b/intern/cycles/render/nodes.h index 41894dce86a..8d73a94abb5 100644 --- a/intern/cycles/render/nodes.h +++ b/intern/cycles/render/nodes.h @@ -912,11 +912,13 @@ public: static OSLNode *create(size_t num_inputs); ~OSLNode(); + ShaderNode *clone() const; + char* input_default_value(); void add_input(ustring name, SocketType::Type type); void add_output(ustring name, SocketType::Type type); - SHADER_NODE_BASE_CLASS(OSLNode) + SHADER_NODE_NO_CLONE_CLASS(OSLNode) /* ideally we could beter detect this, but we can't query this now */ bool has_spatial_varying() { return true; } @@ -924,9 +926,6 @@ public: string filepath; string bytecode_hash; - -private: - OSLNode(); }; class NormalMapNode : public ShaderNode { |