bugfix [#24247] Duplicating a Composite Group Node no User Count Icon
authorCampbell Barton <ideasman42@gmail.com>
Fri, 15 Oct 2010 04:27:09 +0000 (04:27 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 15 Oct 2010 04:27:09 +0000 (04:27 +0000)
duplicating nodes wasnt changing the usercount of the referenced ID but file loading deleting was.

also removed some unused args.

source/blender/editors/include/ED_node.h
source/blender/editors/space_node/node_draw.c
source/blender/editors/space_node/node_edit.c
source/blender/makesrna/intern/rna_color.c
source/blender/makesrna/intern/rna_nodetree.c
source/blenderplayer/bad_level_call_stubs/stubs.c

index 6e42b77..d287066 100644 (file)
@@ -40,7 +40,7 @@ void ED_init_node_butfuncs(void);
 
 /* node_draw.c */
 void ED_node_changed_update(struct ID *id, struct bNode *node);
-void ED_node_generic_update(struct Main *bmain, struct Scene *scene, struct bNodeTree *ntree, struct bNode *node);
+void ED_node_generic_update(struct Main *bmain, struct bNodeTree *ntree, struct bNode *node);
 
 /* node_edit.c */
 void ED_node_shader_default(struct Material *ma);
index 8316d79..a81d6e3 100644 (file)
@@ -111,7 +111,7 @@ static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup)
        return 0;
 }
 
-void ED_node_generic_update(Main *bmain, Scene *scene, bNodeTree *ntree, bNode *node)
+void ED_node_generic_update(Main *bmain, bNodeTree *ntree, bNode *node)
 {
        Material *ma;
        Tex *tex;
@@ -309,7 +309,7 @@ static void node_update(const bContext *C, bNodeTree *ntree, bNode *node)
 }
 
 /* based on settings in node, sets drawing rect info. each redraw! */
-static void node_update_hidden(const bContext *C, bNode *node)
+static void node_update_hidden(bNode *node)
 {
        bNodeSocket *nsock;
        float rad, drad, hiddenrad= HIDDEN_RAD;
@@ -392,7 +392,7 @@ static void node_update_group(const bContext *C, bNodeTree *ntree, bNode *gnode)
                node->locy+= gnode->locy;
                
                if(node->flag & NODE_HIDDEN)
-                       node_update_hidden(C, node);
+                       node_update_hidden(node);
                else
                        node_update(C, ntree, node);
                node->locx-= gnode->locx;
@@ -483,7 +483,7 @@ static void node_draw_mute_line(View2D *v2d, SpaceNode *snode, bNode *node)
 
 /* nice AA filled circle */
 /* this might have some more generic use */
-static void circle_draw(float x, float y, float size, int type, int col[3])
+static void circle_draw(float x, float y, float size, int col[3])
 {
        /* 16 values of sin function */
        static float si[16] = {
@@ -538,11 +538,11 @@ static void socket_circle_draw(bNodeSocket *sock, float size)
        else { 
                col[0]= 100; col[1]= 200; col[2]= 100;
        }
-       
-       circle_draw(sock->locx, sock->locy, size, sock->type, col);
+
+       circle_draw(sock->locx, sock->locy, size, col);
 }
 
-static void node_sync_cb(bContext *C, void *snode_v, void *node_v)
+static void node_sync_cb(bContext *UNUSED(C), void *snode_v, void *node_v)
 {
        SpaceNode *snode= snode_v;
        
@@ -1103,7 +1103,7 @@ void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d)
                        if(node->flag & NODE_GROUP_EDIT)
                                node_update_group(C, snode->nodetree, node);
                        else if(node->flag & NODE_HIDDEN)
-                               node_update_hidden(C, node);
+                               node_update_hidden(node);
                        else
                                node_update(C, snode->nodetree, node);
                }
index 42aec17..71f48f0 100644 (file)
@@ -98,7 +98,7 @@ static int compo_breakjob(void *cjv)
 }
 
 /* called by compo, wmJob sends notifier */
-static void compo_redrawjob(void *cjv, char *str)
+static void compo_redrawjob(void *cjv, char *UNUSED(str))
 {
        CompoJob *cj= cjv;
        
@@ -1475,9 +1475,18 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
 static int node_duplicate_exec(bContext *C, wmOperator *UNUSED(op))
 {
        SpaceNode *snode= CTX_wm_space_node(C);
+       bNode *node;
        
        ED_preview_kill_jobs(C);
 
+       /* simple id user adjustment, node internal functions dont touch this
+        * but operators and readfile.c do. */
+       for(node= snode->edittree->nodes.first; node; node= node->next) {
+               if(node->flag & SELECT) {
+                       id_us_plus(node->id);
+               }
+       }
+
        ntreeCopyTree(snode->edittree, 1);      /* 1 == internally selected nodes */
        
        ntreeSolveOrder(snode->edittree);
index 509fecb..cd588b5 100644 (file)
@@ -253,7 +253,7 @@ static void rna_ColorRamp_update(Main *bmain, Scene *scene, PointerRNA *ptr)
 
                                for(node=ntree->nodes.first; node; node=node->next) {
                                        if (ELEM3(node->type, SH_NODE_VALTORGB, CMP_NODE_VALTORGB, TEX_NODE_VALTORGB)) {
-                                               ED_node_generic_update(bmain, scene, ntree, node);
+                                               ED_node_generic_update(bmain, ntree, node);
                                        }
                                }
                        }
index a970332..ef56ad6 100644 (file)
@@ -159,7 +159,7 @@ static void rna_Image_end_frame_set(PointerRNA *ptr, int value)
 
 static void node_update(Main *bmain, Scene *scene, bNodeTree *ntree, bNode *node)
 {
-       ED_node_generic_update(bmain, scene, ntree, node);
+       ED_node_generic_update(bmain, ntree, node);
 }
 
 static void rna_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr)
index f563cac..b9580cf 100644 (file)
@@ -219,7 +219,7 @@ void WM_event_add_fileselect(struct bContext *C, struct wmOperator *op){}
 void WM_cursor_wait (int val) {}
 void ED_node_texture_default(struct Tex *tx){}
 void ED_node_changed_update(struct bContext *C, struct bNode *node){}
-void ED_node_generic_update(struct Main *bmain, struct Scene *scene, struct bNodeTree *ntree, struct bNode *node){}
+void ED_node_generic_update(struct Main *bmain, struct bNodeTree *ntree, struct bNode *node){}
 void ED_view3d_scene_layers_update(struct Main *bmain, struct Scene *scene){}
 int ED_view3d_scene_layer_set(int lay, const int *values){return 0;}
 void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar){}