diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-07-02 16:08:16 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-07-02 16:12:59 +0300 |
commit | 71099a3d67fbf8cfb83faa014215f34fa3232ff6 (patch) | |
tree | 701bdc598cd0f60af87688824797da00af69211b /source/blender/nodes/composite | |
parent | 163996b68129f3a34db73c6a6a1e81ec8f4a81e4 (diff) |
Fix T66290: new Node's init api callback was not handling ID usercount.
As Usual...
Note that we have to edit each C-defined of those callbacks that set
Node->id pointer, instead of just moving the generic call to
`id_us_plus()` in `node_init()` below the call to
`ntype->initfunc_api()`, since that one manipulates RNA pointers, which
are supposed to already handle usercounts themselves on assignment.
The C callbacks are moving back to manipulating directly DNA, so it's
their responsability to handle user count then (Py code should do that
automatically through RNA assignement).
Diffstat (limited to 'source/blender/nodes/composite')
5 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c index 79db436ec4e..88765f1d165 100644 --- a/source/blender/nodes/composite/nodes/node_composite_image.c +++ b/source/blender/nodes/composite/nodes/node_composite_image.c @@ -32,6 +32,7 @@ #include "BKE_context.h" #include "BKE_global.h" +#include "BKE_library.h" #include "BKE_main.h" #include "BKE_scene.h" @@ -514,6 +515,7 @@ static void node_composit_init_rlayers(const bContext *C, PointerRNA *ptr) int sock_index = 0; node->id = &scene->id; + id_us_plus(node->id); for (bNodeSocket *sock = node->outputs.first; sock; sock = sock->next, sock_index++) { NodeImageLayer *sockdata = MEM_callocN(sizeof(NodeImageLayer), "node image layer"); diff --git a/source/blender/nodes/composite/nodes/node_composite_movieclip.c b/source/blender/nodes/composite/nodes/node_composite_movieclip.c index e871b764a82..07b339a5b78 100644 --- a/source/blender/nodes/composite/nodes/node_composite_movieclip.c +++ b/source/blender/nodes/composite/nodes/node_composite_movieclip.c @@ -24,6 +24,7 @@ #include "node_composite_util.h" #include "BKE_context.h" +#include "BKE_library.h" static bNodeSocketTemplate cmp_node_movieclip_out[] = { {SOCK_RGBA, 0, N_("Image")}, @@ -42,6 +43,7 @@ static void init(const bContext *C, PointerRNA *ptr) MovieClipUser *user = MEM_callocN(sizeof(MovieClipUser), "node movie clip user"); node->id = (ID *)scene->clip; + id_us_plus(node->id); node->storage = user; user->framenr = 1; } diff --git a/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c b/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c index dbdd65c5976..d218f7568eb 100644 --- a/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c +++ b/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c @@ -24,6 +24,7 @@ #include "node_composite_util.h" #include "BKE_context.h" +#include "BKE_library.h" /* **************** Translate ******************** */ @@ -53,6 +54,7 @@ static void init(const bContext *C, PointerRNA *ptr) Scene *scene = CTX_data_scene(C); node->id = (ID *)scene->clip; + id_us_plus(node->id); } static void storage_free(bNode *node) diff --git a/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c b/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c index 55d4ada0ca1..c13356f72b0 100644 --- a/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c +++ b/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c @@ -24,6 +24,7 @@ #include "node_composite_util.h" #include "BKE_context.h" +#include "BKE_library.h" /* **************** Translate ******************** */ @@ -43,6 +44,7 @@ static void init(const bContext *C, PointerRNA *ptr) Scene *scene = CTX_data_scene(C); node->id = (ID *)scene->clip; + id_us_plus(node->id); /* default to bilinear, see node_sampler_type_items in rna_nodetree.c */ node->custom1 = 1; diff --git a/source/blender/nodes/composite/nodes/node_composite_switchview.c b/source/blender/nodes/composite/nodes/node_composite_switchview.c index 12401a8bbdf..92e06307afb 100644 --- a/source/blender/nodes/composite/nodes/node_composite_switchview.c +++ b/source/blender/nodes/composite/nodes/node_composite_switchview.c @@ -23,6 +23,8 @@ */ #include "BKE_context.h" +#include "BKE_library.h" + #include "../node_composite_util.h" /* **************** SWITCH VIEW ******************** */ @@ -122,6 +124,7 @@ static void init_switch_view(const bContext *C, PointerRNA *ptr) /* store scene for updates */ node->id = (ID *)scene; + id_us_plus(node->id); if (scene) { RenderData *rd = &scene->r; |