diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-04-29 20:07:08 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-04-29 20:14:57 +0300 |
commit | 39226cd437c4d68134369740bdab945c4b4d4364 (patch) | |
tree | b11091554be98589057eb60dd2358dd7674e59db | |
parent | b4f0d52473382d5f2339d75a391be0871dd86747 (diff) |
Fix T87317: Cycles XML parsing broken after bugfix for initialization order
-rw-r--r-- | intern/cycles/graph/node_type.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/intern/cycles/graph/node_type.h b/intern/cycles/graph/node_type.h index 2a741d9b06f..8b37398fa17 100644 --- a/intern/cycles/graph/node_type.h +++ b/intern/cycles/graph/node_type.h @@ -148,16 +148,17 @@ struct NodeType { #define NODE_DECLARE \ static const NodeType *get_node_type(); \ template<typename T> static const NodeType *register_type(); \ - static Node *create(const NodeType *type); + static Node *create(const NodeType *type); \ + static const NodeType *node_type; #define NODE_DEFINE(structname) \ + const NodeType *structname::node_type = structname::register_type<structname>(); \ Node *structname::create(const NodeType *) \ { \ return new structname(); \ } \ const NodeType *structname::get_node_type() \ { \ - static const NodeType *node_type = register_type<structname>(); \ return node_type; \ } \ template<typename T> const NodeType *structname::register_type() @@ -169,6 +170,8 @@ struct NodeType { #define NODE_ABSTRACT_DEFINE(structname) \ const NodeType *structname::get_node_base_type() \ { \ + /* Base types constructed in this getter to ensure correct initialization \ + * order. Regular types are not so they are auto-registered for XML parsing. */ \ static const NodeType *node_base_type = register_base_type<structname>(); \ return node_base_type; \ } \ |