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:
authorBastien Montagne <montagne29@wanadoo.fr>2019-07-02 16:08:16 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-07-02 16:12:59 +0300
commit71099a3d67fbf8cfb83faa014215f34fa3232ff6 (patch)
tree701bdc598cd0f60af87688824797da00af69211b /source/blender/nodes
parent163996b68129f3a34db73c6a6a1e81ec8f4a81e4 (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')
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_image.c2
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_movieclip.c2
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_moviedistortion.c2
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_stabilize2d.c2
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_switchview.c3
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;