Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Porces <cmporces>2019-03-16 20:54:00 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-16 22:21:16 +0300
commit5797a5fc65c87b69460d910a82d219b5e3ea12ad (patch)
tree98ffac5a6ad2904d916987720460765b763d2e50 /source/blender/editors/space_node/node_edit.c
parentb9af4efe41712680d554a389d771e83c66fce5c4 (diff)
Fix ID user counting issues with NodeCustomGroup.
User counting now happens before init() and after free() methods, so that the ID users are in a valid state when Python might modify them. ID user counting was moved into node.c and simplified. Patch by Miguel with further refactoring by Brecht. Ref D4370.
Diffstat (limited to 'source/blender/editors/space_node/node_edit.c')
-rw-r--r--source/blender/editors/space_node/node_edit.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index b1cada9752a..1a18e886808 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -1590,11 +1590,8 @@ static int node_delete_exec(bContext *C, wmOperator *UNUSED(op))
for (node = snode->edittree->nodes.first; node; node = next) {
next = node->next;
if (node->flag & SELECT) {
- /* check id user here, nodeFreeNode is called for free dbase too */
do_tag_update |= (do_tag_update || node_connected_to_output(bmain, snode->edittree, node));
- if (node->id)
- id_us_min(node->id);
- nodeDeleteNode(bmain, snode->edittree, node);
+ nodeRemoveNode(bmain, snode->edittree, node, true);
}
}
@@ -1684,11 +1681,7 @@ static int node_delete_reconnect_exec(bContext *C, wmOperator *UNUSED(op))
next = node->next;
if (node->flag & SELECT) {
nodeInternalRelink(snode->edittree, node);
-
- /* check id user here, nodeFreeNode is called for free dbase too */
- if (node->id)
- id_us_min(node->id);
- nodeDeleteNode(bmain, snode->edittree, node);
+ nodeRemoveNode(bmain, snode->edittree, node, true);
}
}