diff options
Diffstat (limited to 'source/blender/blenkernel/intern/curve.c')
-rw-r--r-- | source/blender/blenkernel/intern/curve.c | 31 |
1 files changed, 2 insertions, 29 deletions
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 3a7be948760..4fb2cda3a2c 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -177,7 +177,6 @@ Curve *BKE_curve_add(Main *bmain, const char *name, int type) Curve *BKE_curve_copy(Main *bmain, Curve *cu) { Curve *cun; - int a; cun = BKE_libblock_copy(bmain, &cu->id); @@ -185,9 +184,6 @@ Curve *BKE_curve_copy(Main *bmain, Curve *cu) BKE_nurbList_duplicate(&(cun->nurb), &(cu->nurb)); cun->mat = MEM_dupallocN(cu->mat); - for (a = 0; a < cun->totcol; a++) { - id_us_plus((ID *)cun->mat[a]); - } cun->str = MEM_dupallocN(cu->str); cun->strinfo = MEM_dupallocN(cu->strinfo); @@ -196,21 +192,14 @@ Curve *BKE_curve_copy(Main *bmain, Curve *cu) if (cu->key) { cun->key = BKE_key_copy(bmain, cu->key); + cun->key->id.us = 0; /* Will be increased again by BKE_id_expand_local. */ cun->key->from = (ID *)cun; } cun->editnurb = NULL; cun->editfont = NULL; -#if 0 // XXX old animation system - /* single user ipo too */ - if (cun->ipo) cun->ipo = copy_ipo(cun->ipo); -#endif // XXX old animation system - - id_us_plus((ID *)cun->vfont); - id_us_plus((ID *)cun->vfontb); - id_us_plus((ID *)cun->vfonti); - id_us_plus((ID *)cun->vfontbi); + BKE_id_expand_local(&cun->id, true); if (ID_IS_LINKED_DATABLOCK(cu)) { BKE_id_lib_local_paths(bmain, cu->id.lib, &cun->id); @@ -219,21 +208,6 @@ Curve *BKE_curve_copy(Main *bmain, Curve *cu) return cun; } -static int extern_local_curve_callback( - void *UNUSED(user_data), struct ID *UNUSED(id_self), struct ID **id_pointer, int cd_flag) -{ - /* We only tag usercounted ID usages as extern... Why? */ - if ((cd_flag & IDWALK_USER) && *id_pointer) { - id_lib_extern(*id_pointer); - } - return IDWALK_RET_NOP; -} - -static void extern_local_curve(Curve *cu) -{ - BKE_library_foreach_ID_link(&cu->id, extern_local_curve_callback, NULL, 0); -} - void BKE_curve_make_local(Main *bmain, Curve *cu) { bool is_local = false, is_lib = false; @@ -255,7 +229,6 @@ void BKE_curve_make_local(Main *bmain, Curve *cu) if (cu->key) { BKE_key_make_local(bmain, cu->key); } - extern_local_curve(cu); } else { Curve *cu_new = BKE_curve_copy(bmain, cu); |