From e6f3d8b3e1158ebdc89ceae1de5ce7bc5c420f51 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 22 Aug 2019 16:00:59 +0200 Subject: Revert "Fix T68971: Copy As New Driver from Material node creates a bad reference." This reverts commits 54fd8176d7e91, 4c5becb6b1 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. --- source/blender/blenkernel/BKE_node.h | 12 ++------- source/blender/blenkernel/intern/light.c | 2 +- source/blender/blenkernel/intern/linestyle.c | 5 ++-- source/blender/blenkernel/intern/material.c | 6 ++--- source/blender/blenkernel/intern/node.c | 21 +++++---------- source/blender/blenkernel/intern/scene.c | 2 +- source/blender/blenkernel/intern/texture.c | 2 +- source/blender/blenkernel/intern/world.c | 2 +- source/blender/blenloader/intern/readfile.c | 18 ++++++------- source/blender/editors/animation/drivers.c | 30 ---------------------- source/blender/editors/include/ED_keyframing.h | 5 ---- source/blender/editors/interface/interface_ops.c | 8 +++--- source/blender/editors/space_node/node_add.c | 2 +- source/blender/editors/space_node/node_edit.c | 6 ++--- source/blender/editors/space_node/node_group.c | 4 +-- .../blender_interface/BlenderStrokeRenderer.cpp | 4 +-- source/blender/makesdna/DNA_node_types.h | 3 --- source/blender/makesrna/intern/rna_main_api.c | 2 +- 18 files changed, 39 insertions(+), 95 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index a593f0f2ca6..e3d0588b607 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -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); diff --git a/source/blender/blenkernel/intern/light.c b/source/blender/blenkernel/intern/light.c index 654abef389d..75c9e0e42a5 100644 --- a/source/blender/blenkernel/intern/light.c +++ b/source/blender/blenkernel/intern/light.c @@ -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) { diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c index b682e4265ad..7bfe5a7c8ff 100644 --- a/source/blender/blenkernel/intern/linestyle.c +++ b/source/blender/blenkernel/intern/linestyle.c @@ -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; diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 01df423d9d7..1545ae4f48f 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -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); } } diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 973b30a640b..206c59c110a 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -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) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 14642cb6cf5..1ef93427253 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -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); } diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 4d55155ab24..ad7c5e3f660 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -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) { diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c index 963905ff8e8..109d615ae83 100644 --- a/source/blender/blenkernel/intern/world.c +++ b/source/blender/blenkernel/intern/world.c @@ -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); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 47fa8704df9..1e3342cef04 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -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); diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index bf2056a7ec6..e341a16378c 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -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) diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index 455337b9cc0..bbeeeade822 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -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); diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index f8df8966297..c7ce66cfcf6 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -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; } diff --git a/source/blender/editors/space_node/node_add.c b/source/blender/editors/space_node/node_add.c index 5ee1925fd55..01a30f677a3 100644 --- a/source/blender/editors/space_node/node_add.c +++ b/source/blender/editors/space_node/node_add.c @@ -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); diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 46dfa65e73c..d31256a1425 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -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; diff --git a/source/blender/editors/space_node/node_group.c b/source/blender/editors/space_node/node_group.c index 303cd39abba..3fd03bac874 100644 --- a/source/blender/editors/space_node/node_group.c +++ b/source/blender/editors/space_node/node_group.c @@ -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); diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp index 38fff56b88d..984a2d01a68 100644 --- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp +++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp @@ -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; diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index d953237d129..af66add01f3 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -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 */ diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index de6f271fd9c..fec991e16da 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -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; -- cgit v1.2.3