[Bf-blender-cvs] [39226cd437c] blender-v2.93-release: Fix T87317: Cycles XML parsing broken after bugfix for initialization order

Brecht Van Lommel noreply at git.blender.org
Thu Apr 29 19:16:14 CEST 2021


Commit: 39226cd437c4d68134369740bdab945c4b4d4364
Author: Brecht Van Lommel
Date:   Thu Apr 29 19:07:08 2021 +0200
Branches: blender-v2.93-release
https://developer.blender.org/rB39226cd437c4d68134369740bdab945c4b4d4364

Fix T87317: Cycles XML parsing broken after bugfix for initialization order

===================================================================

M	intern/cycles/graph/node_type.h

===================================================================

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; \
   } \



More information about the Bf-blender-cvs mailing list