From 449f8ce4feeef8cfa57a8cbe299e0e718b9473b4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 30 Jul 2010 06:09:23 +0000 Subject: bugfix [#22859] Multi-user images cant be made into single user in texure panel. turns out this isnt exactly a bug since support was never written for this but may as well support it. now rna/py can do image.copy() too. --- source/blender/blenkernel/intern/deform.c | 1 + source/blender/blenkernel/intern/image.c | 24 ++++++++++++++++-------- source/blender/blenkernel/intern/library.c | 3 ++- source/blender/blenkernel/intern/node.c | 2 +- 4 files changed, 20 insertions(+), 10 deletions(-) (limited to 'source/blender/blenkernel/intern') diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index ccb6ebe1f1e..5f262c526c3 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -471,6 +471,7 @@ void flip_side_name (char *name, const char *from_name, int strip_number) #undef IS_SEPARATOR sprintf (name, "%s%s%s%s", prefix, replace, suffix, number); + printf("'%s' --> '%s'\n", from_name, name); } float defvert_find_weight(const struct MDeformVert *dvert, int group_num) diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index ffd0b378f07..77607ae25b6 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -287,17 +287,25 @@ static void image_assign_ibuf(Image *ima, ImBuf *ibuf, int index, int frame) } /* empty image block, of similar type and filename */ -Image *BKE_image_copy(Image *ima) +Image *copy_image(Image *ima) { - Image *new= image_alloc(ima->id.name+2, ima->source, ima->type); + Image *nima= image_alloc(ima->id.name+2, ima->source, ima->type); - BLI_strncpy(new->name, ima->name, sizeof(ima->name)); - - new->gen_x= ima->gen_x; - new->gen_y= ima->gen_y; - new->gen_type= ima->gen_type; + BLI_strncpy(nima->name, ima->name, sizeof(ima->name)); + + nima->flag= ima->flag; + nima->tpageflag= ima->tpageflag; - return new; + nima->gen_x= ima->gen_x; + nima->gen_y= ima->gen_y; + nima->gen_type= ima->gen_type; + + nima->animspeed= ima->animspeed; + + nima->aspx= ima->aspx; + nima->aspy= ima->aspy; + + return nima; } void BKE_image_merge(Image *dest, Image *source) diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index acfaef9eb88..716a0b7d41b 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -262,7 +262,8 @@ int id_copy(ID *id, ID **newid, int test) if(!test) *newid= (ID*)copy_texture((Tex*)id); return 1; case ID_IM: - return 0; /* not implemented */ + if(!test) *newid= (ID*)copy_image((Image*)id); + return 1; case ID_WV: return 0; /* deprecated */ case ID_LT: diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index add011d0950..ff1887b0883 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -2565,7 +2565,7 @@ bNodeTree *ntreeLocalize(bNodeTree *ntree) if(ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { if(node->id) { if(node->flag & NODE_DO_OUTPUT) - node->new_node->id= (ID *)BKE_image_copy((Image *)node->id); + node->new_node->id= (ID *)copy_image((Image *)node->id); else node->new_node->id= NULL; } -- cgit v1.2.3