Revert "Fix T68971: Copy As New Driver from Material node creates a bad reference."
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 22 Aug 2019 14:00:59 +0000 (16:00 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 22 Aug 2019 14:07:36 +0000 (16:07 +0200)
This reverts commits 54fd8176d7e914c5becb6b1 and 8f578150e.

Those kind of commits must be reviewed and approved by project owners.

That one:
* Broke Collada building by not properly updating all calls to modified
function.
* Broke *whole* ID management by not properly updating library_query.c.

And in general, I am strongly against backward ID pointers, those are
*always* a serious PITA for ID management. Sometimes  they cannot be
avoided, but in general other ways to get that kind of info should be
investigated first.

18 files changed:
source/blender/blenkernel/BKE_node.h
source/blender/blenkernel/intern/light.c
source/blender/blenkernel/intern/linestyle.c
source/blender/blenkernel/intern/material.c
source/blender/blenkernel/intern/node.c
source/blender/blenkernel/intern/scene.c
source/blender/blenkernel/intern/texture.c
source/blender/blenkernel/intern/world.c
source/blender/blenloader/intern/readfile.c
source/blender/editors/animation/drivers.c
source/blender/editors/include/ED_keyframing.h
source/blender/editors/interface/interface_ops.c
source/blender/editors/space_node/node_add.c
source/blender/editors/space_node/node_edit.c
source/blender/editors/space_node/node_group.c
source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
source/blender/makesdna/DNA_node_types.h
source/blender/makesrna/intern/rna_main_api.c

index a593f0f2ca673ba340db426a602a7ff0c88a4156..e3d0588b60770eff3b85d9b7a27178a073660872 100644 (file)
@@ -366,10 +366,7 @@ struct GHashIterator *ntreeTypeGetIterator(void);
 void ntreeSetTypes(const struct bContext *C, struct bNodeTree *ntree);
 
 void ntreeInitDefault(struct bNodeTree *ntree);
-struct bNodeTree *ntreeAddTree(struct Main *bmain,
-                               const char *name,
-                               const char *idname,
-                               struct ID *owner);
+struct bNodeTree *ntreeAddTree(struct Main *bmain, const char *name, const char *idname);
 
 /* copy/free funcs, need to manage ID users */
 void ntreeFreeTree(struct bNodeTree *ntree);
@@ -379,15 +376,10 @@ void BKE_node_tree_copy_data(struct Main *bmain,
                              struct bNodeTree *ntree_dst,
                              const struct bNodeTree *ntree_src,
                              const int flag);
-void BKE_nodetree_copy_owned_ex(
-    struct Main *bmain, struct bNodeTree *src, struct bNodeTree **dst, struct ID *owner, int flag);
 struct bNodeTree *ntreeCopyTree_ex(const struct bNodeTree *ntree,
                                    struct Main *bmain,
-                                   struct ID *owner,
                                    const bool do_id_user);
-struct bNodeTree *ntreeCopyTree(struct Main *bmain,
-                                const struct bNodeTree *ntree,
-                                struct ID *owner);
+struct bNodeTree *ntreeCopyTree(struct Main *bmain, const struct bNodeTree *ntree);
 /* node->id user count */
 void ntreeUserIncrefID(struct bNodeTree *ntree);
 void ntreeUserDecrefID(struct bNodeTree *ntree);
index 654abef389d644f7b64ae8b9c3c2887f95db7745..75c9e0e42a5c17ab78be79f5edac42823e5c1ad2 100644 (file)
@@ -113,7 +113,7 @@ void BKE_light_copy_data(Main *bmain, Light *la_dst, const Light *la_src, const
   if (la_src->nodetree) {
     /* Note: nodetree is *not* in bmain, however this specific case is handled at lower level
      *       (see BKE_libblock_copy_ex()). */
-    BKE_nodetree_copy_owned_ex(bmain, la_src->nodetree, &la_dst->nodetree, &la_dst->id, flag);
+    BKE_id_copy_ex(bmain, (ID *)la_src->nodetree, (ID **)&la_dst->nodetree, flag);
   }
 
   if ((flag & LIB_ID_COPY_NO_PREVIEW) == 0) {
index b682e4265ad345c9e1bd83e1debf2ac447cf34b5..7bfe5a7c8ffafb751782bed297baa08a2f021af4 100644 (file)
@@ -178,8 +178,7 @@ void BKE_linestyle_copy_data(struct Main *bmain,
   if (linestyle_src->nodetree) {
     /* Note: nodetree is *not* in bmain, however this specific case is handled at lower level
      *       (see BKE_libblock_copy_ex()). */
-    BKE_nodetree_copy_owned_ex(
-        bmain, linestyle_src->nodetree, &linestyle_dst->nodetree, &linestyle_dst->id, flag);
+    BKE_id_copy_ex(bmain, (ID *)linestyle_src->nodetree, (ID **)&linestyle_dst->nodetree, flag);
   }
 
   LineStyleModifier *m;
@@ -1457,7 +1456,7 @@ void BKE_linestyle_default_shader(const bContext *C, FreestyleLineStyle *linesty
 
   BLI_assert(linestyle->nodetree == NULL);
 
-  ntree = ntreeAddTree(NULL, "stroke_shader", "ShaderNodeTree", &linestyle->id);
+  ntree = ntreeAddTree(NULL, "stroke_shader", "ShaderNodeTree");
 
   linestyle->nodetree = ntree;
 
index 01df423d9d790274e57a6f6c72c8e9fc0239551c..1545ae4f48fff6ec5cfa9ca9d5ed1844a8a763c4 100644 (file)
@@ -183,7 +183,7 @@ void BKE_material_copy_data(Main *bmain, Material *ma_dst, const Material *ma_sr
   if (ma_src->nodetree) {
     /* Note: nodetree is *not* in bmain, however this specific case is handled at lower level
      *       (see BKE_libblock_copy_ex()). */
-    BKE_nodetree_copy_owned_ex(bmain, ma_src->nodetree, &ma_dst->nodetree, &ma_dst->id, flag);
+    BKE_id_copy_ex(bmain, (ID *)ma_src->nodetree, (ID **)&ma_dst->nodetree, flag);
   }
 
   if ((flag & LIB_ID_COPY_NO_PREVIEW) == 0) {
@@ -1562,7 +1562,7 @@ void copy_matcopybuf(Main *bmain, Material *ma)
   memcpy(&matcopybuf, ma, sizeof(Material));
 
   if (ma->nodetree != NULL) {
-    matcopybuf.nodetree = ntreeCopyTree_ex(ma->nodetree, bmain, NULL, false);
+    matcopybuf.nodetree = ntreeCopyTree_ex(ma->nodetree, bmain, false);
   }
 
   matcopybuf.preview = NULL;
@@ -1592,7 +1592,7 @@ void paste_matcopybuf(Main *bmain, Material *ma)
   (ma->id) = id;
 
   if (matcopybuf.nodetree != NULL) {
-    ma->nodetree = ntreeCopyTree_ex(matcopybuf.nodetree, bmain, &ma->id, false);
+    ma->nodetree = ntreeCopyTree_ex(matcopybuf.nodetree, bmain, false);
   }
 }
 
index 973b30a640b64359b26b73e0cbd030b11723a192..206c59c110adaba97d66fabc6a42a3332c879b0d 100644 (file)
@@ -1132,7 +1132,7 @@ bNodeTree *ntreeCopyTree_ex_new_pointers(const bNodeTree *ntree,
                                          Main *bmain,
                                          const bool do_id_user)
 {
-  bNodeTree *new_ntree = ntreeCopyTree_ex(ntree, bmain, NULL, do_id_user);
+  bNodeTree *new_ntree = ntreeCopyTree_ex(ntree, bmain, do_id_user);
   bNode *new_node = new_ntree->nodes.first;
   bNode *node_src = ntree->nodes.first;
   while (new_node != NULL) {
@@ -1394,7 +1394,7 @@ void ntreeInitDefault(bNodeTree *ntree)
   ntree_set_typeinfo(ntree, NULL);
 }
 
-bNodeTree *ntreeAddTree(Main *bmain, const char *name, const char *idname, ID *owner)
+bNodeTree *ntreeAddTree(Main *bmain, const char *name, const char *idname)
 {
   bNodeTree *ntree;
 
@@ -1408,7 +1408,6 @@ bNodeTree *ntreeAddTree(Main *bmain, const char *name, const char *idname, ID *o
     ntree = MEM_callocN(sizeof(bNodeTree), "new node tree");
     *((short *)ntree->id.name) = ID_NT;
     BLI_strncpy(ntree->id.name + 2, name, sizeof(ntree->id.name));
-    ntree->owner = owner;
   }
 
   /* Types are fully initialized at this point,
@@ -1529,22 +1528,16 @@ void BKE_node_tree_copy_data(Main *UNUSED(bmain),
   ntree_dst->interface_type = NULL;
 }
 
-void BKE_nodetree_copy_owned_ex(Main *bmain, bNodeTree *src, bNodeTree **dst, ID *owner, int flag)
+bNodeTree *ntreeCopyTree_ex(const bNodeTree *ntree, Main *bmain, const bool do_id_user)
 {
-  if (BKE_id_copy_ex(bmain, (ID *)src, (ID **)dst, flag)) {
-    (*dst)->owner = owner;
-  }
-}
-bNodeTree *ntreeCopyTree_ex(const bNodeTree *ntree, Main *bmain, ID *owner, const bool do_id_user)
-{
-  bNodeTree *ntree_copy = NULL;
+  bNodeTree *ntree_copy;
   const int flag = do_id_user ? LIB_ID_CREATE_NO_USER_REFCOUNT | LIB_ID_CREATE_NO_MAIN : 0;
-  BKE_nodetree_copy_owned_ex(bmain, ntree, &ntree_copy, owner, flag);
+  BKE_id_copy_ex(bmain, (ID *)ntree, (ID **)&ntree_copy, flag);
   return ntree_copy;
 }
-bNodeTree *ntreeCopyTree(Main *bmain, const bNodeTree *ntree, ID *owner)
+bNodeTree *ntreeCopyTree(Main *bmain, const bNodeTree *ntree)
 {
-  return ntreeCopyTree_ex(ntree, bmain, owner, true);
+  return ntreeCopyTree_ex(ntree, bmain, true);
 }
 
 void ntreeUserIncrefID(bNodeTree *ntree)
index 14642cb6cf51a95a78419594cb410108273845ce..1ef934272533c44ed00726f2fceb8a0ee7a4d50b 100644 (file)
@@ -267,7 +267,7 @@ void BKE_scene_copy_data(Main *bmain, Scene *sce_dst, const Scene *sce_src, cons
   if (sce_src->nodetree) {
     /* Note: nodetree is *not* in bmain, however this specific case is handled at lower level
      *       (see BKE_libblock_copy_ex()). */
-    BKE_nodetree_copy_owned_ex(bmain, sce_src->nodetree, &sce_dst->nodetree, &sce_dst->id, flag);
+    BKE_id_copy_ex(bmain, (ID *)sce_src->nodetree, (ID **)&sce_dst->nodetree, flag);
     BKE_libblock_relink_ex(bmain, sce_dst->nodetree, (void *)(&sce_src->id), &sce_dst->id, false);
   }
 
index 4d55155ab24d3d2dcae6a95782096af2b74c84f3..ad7c5e3f660ba11f2f4fc5e6e71e9859fb2d4cc2 100644 (file)
@@ -436,7 +436,7 @@ void BKE_texture_copy_data(Main *bmain, Tex *tex_dst, const Tex *tex_src, const
     }
     /* Note: nodetree is *not* in bmain, however this specific case is handled at lower level
      *       (see BKE_libblock_copy_ex()). */
-    BKE_nodetree_copy_owned_ex(bmain, tex_src->nodetree, &tex_dst->nodetree, &tex_dst->id, flag);
+    BKE_id_copy_ex(bmain, (ID *)tex_src->nodetree, (ID **)&tex_dst->nodetree, flag);
   }
 
   if ((flag & LIB_ID_COPY_NO_PREVIEW) == 0) {
index 963905ff8e85adc049ee83c1721ad751df528a1d..109d615ae83ceddeb3eb6f3f513b4a23d5a60c4e 100644 (file)
@@ -109,7 +109,7 @@ void BKE_world_copy_data(Main *bmain, World *wrld_dst, const World *wrld_src, co
   if (wrld_src->nodetree) {
     /* Note: nodetree is *not* in bmain, however this specific case is handled at lower level
      *       (see BKE_libblock_copy_ex()). */
-    BKE_nodetree_copy_owned_ex(bmain, wrld_src->nodetree, &wrld_dst->nodetree, &wrld_dst->id, flag);
+    BKE_id_copy_ex(bmain, (ID *)wrld_src->nodetree, (ID **)&wrld_dst->nodetree, flag);
   }
 
   BLI_listbase_clear(&wrld_dst->gpumaterial);
index 47fa8704df9f9328da8eb3e1d4ee4e85d5e7e339..1e3342cef0429db89ee89fd7223d92d25d1e6952 100644 (file)
@@ -3477,15 +3477,13 @@ static void direct_link_node_socket(FileData *fd, bNodeSocket *sock)
 }
 
 /* ntree itself has been read! */
-static void direct_link_nodetree(FileData *fd, bNodeTree *ntree, ID *owner)
+static void direct_link_nodetree(FileData *fd, bNodeTree *ntree)
 {
   /* note: writing and reading goes in sync, for speed */
   bNode *node;
   bNodeSocket *sock;
   bNodeLink *link;
 
-  ntree->owner = owner;
-
   ntree->init = 0; /* to set callbacks and force setting types */
   ntree->is_updating = false;
   ntree->typeinfo = NULL;
@@ -3960,7 +3958,7 @@ static void direct_link_light(FileData *fd, Light *la)
   la->nodetree = newdataadr(fd, la->nodetree);
   if (la->nodetree) {
     direct_link_id(fd, &la->nodetree->id);
-    direct_link_nodetree(fd, la->nodetree, &la->id);
+    direct_link_nodetree(fd, la->nodetree);
   }
 
   la->preview = direct_link_preview_image(fd, la->preview);
@@ -4123,7 +4121,7 @@ static void direct_link_world(FileData *fd, World *wrld)
   wrld->nodetree = newdataadr(fd, wrld->nodetree);
   if (wrld->nodetree) {
     direct_link_id(fd, &wrld->nodetree->id);
-    direct_link_nodetree(fd, wrld->nodetree, &wrld->id);
+    direct_link_nodetree(fd, wrld->nodetree);
   }
 
   wrld->preview = direct_link_preview_image(fd, wrld->preview);
@@ -4423,7 +4421,7 @@ static void direct_link_texture(FileData *fd, Tex *tex)
   tex->nodetree = newdataadr(fd, tex->nodetree);
   if (tex->nodetree) {
     direct_link_id(fd, &tex->nodetree->id);
-    direct_link_nodetree(fd, tex->nodetree, &tex->id);
+    direct_link_nodetree(fd, tex->nodetree);
   }
 
   tex->preview = direct_link_preview_image(fd, tex->preview);
@@ -4478,7 +4476,7 @@ static void direct_link_material(FileData *fd, Material *ma)
   ma->nodetree = newdataadr(fd, ma->nodetree);
   if (ma->nodetree) {
     direct_link_id(fd, &ma->nodetree->id);
-    direct_link_nodetree(fd, ma->nodetree, &ma->id);
+    direct_link_nodetree(fd, ma->nodetree);
   }
 
   ma->preview = direct_link_preview_image(fd, ma->preview);
@@ -6909,7 +6907,7 @@ static void direct_link_scene(FileData *fd, Scene *sce)
   sce->nodetree = newdataadr(fd, sce->nodetree);
   if (sce->nodetree) {
     direct_link_id(fd, &sce->nodetree->id);
-    direct_link_nodetree(fd, sce->nodetree, &sce->id);
+    direct_link_nodetree(fd, sce->nodetree);
   }
 
   direct_link_view_settings(fd, &sce->view_settings);
@@ -8933,7 +8931,7 @@ static void direct_link_linestyle(FileData *fd, FreestyleLineStyle *linestyle)
   linestyle->nodetree = newdataadr(fd, linestyle->nodetree);
   if (linestyle->nodetree) {
     direct_link_id(fd, &linestyle->nodetree->id);
-    direct_link_nodetree(fd, linestyle->nodetree, &linestyle->id);
+    direct_link_nodetree(fd, linestyle->nodetree);
   }
 }
 
@@ -9295,7 +9293,7 @@ static BHead *read_libblock(FileData *fd, Main *main, BHead *bhead, const int ta
       direct_link_action(fd, (bAction *)id);
       break;
     case ID_NT:
-      direct_link_nodetree(fd, (bNodeTree *)id, NULL);
+      direct_link_nodetree(fd, (bNodeTree *)id);
       break;
     case ID_BR:
       direct_link_brush(fd, (Brush *)id);
index bf2056a7ec67db23d5e22563b6a7281db657e2c5..e341a16378c9be0358bbc0efc5640947fc4adab2 100644 (file)
@@ -846,36 +846,6 @@ bool ANIM_driver_vars_paste(ReportList *reports, FCurve *fcu, bool replace)
 
 /* -------------------------------------------------- */
 
-/** Compute an ID pointer and path to property valid for use in a driver.
- *  Corrects for ID references that are not independent (e.g. material NodeTree). */
-bool ANIM_get_target_ID_and_path_to_property(
-    PointerRNA *ptr, PropertyRNA *prop, int index, ID **r_id, char **r_path)
-{
-  int dim = RNA_property_array_dimension(ptr, prop, NULL);
-  char *path = RNA_path_from_ID_to_property_index(ptr, prop, dim, index);
-  ID *id = ptr->id.data;
-
-  if (!path) {
-    return false;
-  }
-
-  if (GS(id->name) == ID_NT) {
-    bNodeTree *node_tree = (bNodeTree *)id;
-
-    if (node_tree->owner) {
-      id = node_tree->owner;
-
-      char *new_path = BLI_sprintfN("node_tree%s%s", path[0] == '[' ? "" : ".", path);
-      MEM_freeN(path);
-      path = new_path;
-    }
-  }
-
-  *r_id = id;
-  *r_path = path;
-  return true;
-}
-
 /* Create a driver & variable that reads the specified property,
  * and store it in the buffers for Paste Driver and Paste Variables. */
 void ANIM_copy_as_driver(struct ID *target_id, const char *target_path, const char *var_name)
index 455337b9cc0c2c4d7d53c263681eaa3c48d5886e..bbeeeade8225c6129cb0a4772768a192f731a7cd 100644 (file)
@@ -403,11 +403,6 @@ bool ANIM_driver_vars_paste(struct ReportList *reports, struct FCurve *fcu, bool
 
 /* -------- */
 
-/** Compute an ID pointer and path to property valid for use in a driver.
- *  Corrects for ID references that are not independent (e.g. material NodeTree). */
-bool ANIM_get_target_ID_and_path_to_property(
-    struct PointerRNA *ptr, struct PropertyRNA *prop, int index, struct ID **r_id, char **r_path);
-
 /* Create a driver & variable that reads the specified property,
  * and store it in the buffers for Paste Driver and Paste Variables. */
 void ANIM_copy_as_driver(struct ID *target_id, const char *target_path, const char *var_name);
index f8df8966297321a514e24c158f5d15c8f8b8093e..c7ce66cfcf6aa37a3dd2289f35cae9a71e912a30 100644 (file)
@@ -195,11 +195,11 @@ static int copy_as_driver_button_exec(bContext *C, wmOperator *UNUSED(op))
   UI_context_active_but_prop_get(C, &ptr, &prop, &index);
 
   if (ptr.id.data && ptr.data && prop) {
-    ID *id;
-    char *path;
+    int dim = RNA_property_array_dimension(&ptr, prop, NULL);
+    char *path = RNA_path_from_ID_to_property_index(&ptr, prop, dim, index);
 
-    if (ANIM_get_target_ID_and_path_to_property(&ptr, prop, index, &id, &path)) {
-      ANIM_copy_as_driver(id, path, RNA_property_identifier(prop));
+    if (path) {
+      ANIM_copy_as_driver(ptr.id.data, path, RNA_property_identifier(prop));
       MEM_freeN(path);
       return OPERATOR_FINISHED;
     }
index 5ee1925fd55277bb0208db26f5bbf8d931873068..01a30f677a3ff93fd7edf81f482428c7cd0b9b1b 100644 (file)
@@ -509,7 +509,7 @@ static int new_node_tree_exec(bContext *C, wmOperator *op)
     return OPERATOR_CANCELLED;
   }
 
-  ntree = ntreeAddTree(bmain, treename, idname, NULL);
+  ntree = ntreeAddTree(bmain, treename, idname);
 
   /* hook into UI */
   UI_context_active_but_prop_get_templateID(C, &ptr, &prop);
index 46dfa65e73cc8efcd082d8aa6a9ff2e13b0fd5f7..d31256a1425187ed709d4d3b9da88e87b0aa9ce8 100644 (file)
@@ -448,7 +448,7 @@ void ED_node_shader_default(const bContext *C, ID *id)
   int output_type, shader_type;
   float color[4] = {0.0f, 0.0f, 0.0f, 1.0f}, strength = 1.0f;
 
-  ntree = ntreeAddTree(NULL, "Shader Nodetree", ntreeType_Shader->idname, id);
+  ntree = ntreeAddTree(NULL, "Shader Nodetree", ntreeType_Shader->idname);
 
   switch (GS(id->name)) {
     case ID_MA: {
@@ -534,7 +534,7 @@ void ED_node_composit_default(const bContext *C, struct Scene *sce)
     return;
   }
 
-  sce->nodetree = ntreeAddTree(NULL, "Compositing Nodetree", ntreeType_Composite->idname, &sce->id);
+  sce->nodetree = ntreeAddTree(NULL, "Compositing Nodetree", ntreeType_Composite->idname);
 
   sce->nodetree->chunksize = 256;
   sce->nodetree->edit_quality = NTREE_QUALITY_HIGH;
@@ -572,7 +572,7 @@ void ED_node_texture_default(const bContext *C, Tex *tx)
     return;
   }
 
-  tx->nodetree = ntreeAddTree(NULL, "Texture Nodetree", ntreeType_Texture->idname, &tx->id);
+  tx->nodetree = ntreeAddTree(NULL, "Texture Nodetree", ntreeType_Texture->idname);
 
   out = nodeAddStaticNode(C, tx->nodetree, TEX_NODE_OUTPUT);
   out->locx = 300.0f;
index 303cd39abbab4eee5d3f046cc4d5de07eaa882bc..3fd03bac8740aa8dec79bd510e1836a48a1ee9c1 100644 (file)
@@ -644,7 +644,7 @@ static bool node_group_make_test_selected(bNodeTree *ntree,
   int ok = true;
 
   /* make a local pseudo node tree to pass to the node poll functions */
-  ngroup = ntreeAddTree(NULL, "Pseudo Node Group", ntree_idname, NULL);
+  ngroup = ntreeAddTree(NULL, "Pseudo Node Group", ntree_idname);
 
   /* check poll functions for selected nodes */
   for (node = ntree->nodes.first; node; node = node->next) {
@@ -953,7 +953,7 @@ static bNode *node_group_make_from_selected(const bContext *C,
   }
 
   /* new nodetree */
-  ngroup = ntreeAddTree(bmain, "NodeGroup", ntreetype, NULL);
+  ngroup = ntreeAddTree(bmain, "NodeGroup", ntreetype);
 
   /* make group node */
   gnode = nodeAddNode(C, ntree, ntype);
index 38fff56b88dd82b51bb1a8ffb8c4637ed4c6f0d1..984a2d01a68af1c9aac972b92145aedf21404918 100644 (file)
@@ -252,7 +252,7 @@ Material *BlenderStrokeRenderer::GetStrokeShader(Main *bmain,
 
   if (iNodeTree) {
     // make a copy of linestyle->nodetree
-    ntree = ntreeCopyTree_ex(iNodeTree, bmain, &ma->id, do_id_user);
+    ntree = ntreeCopyTree_ex(iNodeTree, bmain, do_id_user);
 
     // find the active Output Line Style node
     for (bNode *node = (bNode *)ntree->nodes.first; node; node = node->next) {
@@ -263,7 +263,7 @@ Material *BlenderStrokeRenderer::GetStrokeShader(Main *bmain,
     }
   }
   else {
-    ntree = ntreeAddTree(NULL, "stroke_shader", "ShaderNodeTree", &ma->id);
+    ntree = ntreeAddTree(NULL, "stroke_shader", "ShaderNodeTree");
   }
   ma->nodetree = ntree;
   ma->use_nodes = 1;
index d953237d1299178a23807c6a3670d3ee48f3c6bf..af66add01f3287d5144f3381de0bf8d1f2ee29db 100644 (file)
@@ -477,9 +477,6 @@ typedef struct bNodeTree {
    */
   struct bNodeTreeExec *execdata;
 
-  /** Data block that owns this tree (Material, etc). Not saved. */
-  struct ID *owner;
-
   /* callbacks */
   void (*progress)(void *, float progress);
   /** \warning may be called by different threads */
index de6f271fd9c7436e5871f90fe25742a4a29fc838..fec991e16da29f9c205bf05b852e152607c0bb0c 100644 (file)
@@ -312,7 +312,7 @@ static struct bNodeTree *rna_Main_nodetree_new(Main *bmain, const char *name, in
 
   bNodeTreeType *typeinfo = rna_node_tree_type_from_enum(type);
   if (typeinfo) {
-    bNodeTree *ntree = ntreeAddTree(bmain, safe_name, typeinfo->idname, NULL);
+    bNodeTree *ntree = ntreeAddTree(bmain, safe_name, typeinfo->idname);
 
     id_us_min(&ntree->id);
     return ntree;