[Bf-blender-cvs] [3e0a1674751] simulation-tree: add userdata to bNodeSocketType

Jacques Lucke noreply at git.blender.org
Mon Feb 17 18:16:29 CET 2020


Commit: 3e0a16747518593a3bc915ee72d36e2225da2cae
Author: Jacques Lucke
Date:   Mon Feb 17 15:50:12 2020 +0100
Branches: simulation-tree
https://developer.blender.org/rB3e0a16747518593a3bc915ee72d36e2225da2cae

add userdata to bNodeSocketType

===================================================================

M	source/blender/blenkernel/BKE_node.h
M	source/blender/blenkernel/intern/node.c
M	source/blender/editors/space_node/drawnode.c
M	source/blender/editors/space_node/node_draw.c
M	source/blender/makesrna/intern/rna_nodetree.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 73fca56e8ae..9f64abad97d 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -117,6 +117,7 @@ typedef struct bNodeSocketType {
   void (*draw_color)(struct bContext *C,
                      struct PointerRNA *ptr,
                      struct PointerRNA *node_ptr,
+                     const void *userdata,
                      float *r_color);
 
   void (*interface_draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr);
@@ -145,6 +146,10 @@ typedef struct bNodeSocketType {
 
   /* for standard socket types in C */
   int type, subtype;
+
+  /* Custom data that can be passed into callbacks. */
+  void *userdata;
+  void (*free_userdata)(void *userdata);
 } bNodeSocketType;
 
 typedef void *(*NodeInitExecFunction)(struct bNodeExecContext *context,
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 7eb548337bc..a6f95b01f1f 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -470,6 +470,9 @@ static void node_free_socket_type(void *socktype_v)
    * or we'd want to update *all* active Mains, which we cannot do anyway currently. */
   update_typeinfo(G_MAIN, NULL, NULL, NULL, socktype, true);
 
+  if (socktype->free_userdata != NULL) {
+    socktype->free_userdata(socktype->userdata);
+  }
   MEM_freeN(socktype);
 }
 
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index af6cb1f641b..3227a1bed5c 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -3162,6 +3162,7 @@ static void node_socket_undefined_draw(bContext *UNUSED(C),
 static void node_socket_undefined_draw_color(bContext *UNUSED(C),
                                              PointerRNA *UNUSED(ptr),
                                              PointerRNA *UNUSED(node_ptr),
+                                             const void *UNUSED(userdata),
                                              float *r_color)
 {
   r_color[0] = 1.0f;
@@ -3268,6 +3269,7 @@ static const float std_node_socket_colors[][4] = {
 static void std_node_socket_draw_color(bContext *UNUSED(C),
                                        PointerRNA *ptr,
                                        PointerRNA *UNUSED(node_ptr),
+                                       const void *UNUSED(userdata),
                                        float *r_color)
 {
   bNodeSocket *sock = ptr->data;
@@ -3436,6 +3438,7 @@ void ED_init_standard_node_socket_type(bNodeSocketType *stype)
 static void node_socket_virtual_draw_color(bContext *UNUSED(C),
                                            PointerRNA *UNUSED(ptr),
                                            PointerRNA *UNUSED(node_ptr),
+                                           const void *UNUSED(userdata),
                                            float *r_color)
 {
   /* alpha = 0, empty circle */
diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c
index 7c64255380b..6bc285045d1 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -737,7 +737,7 @@ static void node_socket_draw(const bContext *C,
   uint flags = 0;
 
   RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &ptr);
-  sock->typeinfo->draw_color((bContext *)C, &ptr, &node_ptr, color);
+  sock->typeinfo->draw_color((bContext *)C, &ptr, &node_ptr, sock->typeinfo->userdata, color);
 
   bNode *node = node_ptr.data;
   if (node->flag & NODE_MUTED) {
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 3506db8b39b..5c2890998e5 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -2090,6 +2090,7 @@ static void rna_NodeSocket_draw(
 static void rna_NodeSocket_draw_color(bContext *C,
                                       PointerRNA *ptr,
                                       PointerRNA *node_ptr,
+                                      const void *UNUSED(userdata),
                                       float *r_color)
 {
   extern FunctionRNA rna_NodeSocket_draw_color_func;
@@ -2589,7 +2590,7 @@ static void rna_NodeSocketStandard_draw_color(
 {
   PointerRNA ptr;
   RNA_pointer_create(id, &RNA_NodeSocket, sock, &ptr);
-  sock->typeinfo->draw_color(C, &ptr, nodeptr, r_color);
+  sock->typeinfo->draw_color(C, &ptr, nodeptr, sock->typeinfo->userdata, r_color);
 }
 
 static void rna_NodeSocketInterfaceStandard_draw(ID *id,



More information about the Bf-blender-cvs mailing list