[Bf-blender-cvs] [249aa6c] free-refcount-ids: Merge branch 'master' into free-refcount-ids
Bastien Montagne
noreply at git.blender.org
Thu Oct 8 12:06:47 CEST 2015
Commit: 249aa6c64907ede8f86e085e538b23881b19cb25
Author: Bastien Montagne
Date: Thu Oct 8 12:03:03 2015 +0200
Branches: free-refcount-ids
https://developer.blender.org/rB249aa6c64907ede8f86e085e538b23881b19cb25
Merge branch 'master' into free-refcount-ids
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/library.c
index 2d2f9c1,d6b2a3c..b24eb65
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@@ -864,7 -865,32 +865,32 @@@ void *BKE_libblock_copy(ID *id
return BKE_libblock_copy_ex(G.main, id);
}
- static void BKE_library_free(Library *lib, const bool UNUSED(do_id_user))
+ static bool id_relink_looper(void *UNUSED(user_data), ID **id_pointer, const int cd_flag)
+ {
+ ID *id = *id_pointer;
+ if (id) {
+ /* See: NEW_ID macro */
+ if (id->newid) {
+ BKE_library_update_ID_link_user(id->newid, id, cd_flag);
+ *id_pointer = id->newid;
+ }
+ else if (id->flag & LIB_NEW) {
+ id->flag &= ~LIB_NEW;
+ BKE_libblock_relink(id);
+ }
+ }
+ return true;
+ }
+
+ void BKE_libblock_relink(ID *id)
+ {
+ if (id->lib)
+ return;
+
+ BKE_library_foreach_ID_link(id, id_relink_looper, NULL, 0);
+ }
+
-static void BKE_library_free(Library *lib)
++static void library_free(Library *lib, const bool UNUSED(do_id_user))
{
if (lib->packedfile)
freePackedFile(lib->packedfile);
@@@ -943,42 -966,42 +969,42 @@@ void BKE_libblock_free_ex(Main *bmain,
switch (type) { /* GetShort from util.h */
case ID_SCE:
- BKE_scene_free((Scene *)id);
+ BKE_scene_free((Scene *)id, do_id_user);
break;
case ID_LI:
- BKE_library_free((Library *)id, do_id_user);
- BKE_library_free((Library *)id);
++ library_free((Library *)id, do_id_user);
break;
case ID_OB:
- BKE_object_free_ex((Object *)id, do_id_user);
+ BKE_object_free((Object *)id, do_id_user);
break;
case ID_ME:
- BKE_mesh_free((Mesh *)id, 1);
+ BKE_mesh_free((Mesh *)id, do_id_user);
break;
case ID_CU:
- BKE_curve_free((Curve *)id);
+ BKE_curve_free((Curve *)id, do_id_user);
break;
case ID_MB:
- BKE_mball_free((MetaBall *)id);
+ BKE_mball_free((MetaBall *)id, do_id_user);
break;
case ID_MA:
- BKE_material_free((Material *)id);
+ BKE_material_free((Material *)id, do_id_user);
break;
case ID_TE:
- BKE_texture_free((Tex *)id);
+ BKE_texture_free((Tex *)id, do_id_user);
break;
case ID_IM:
- BKE_image_free((Image *)id);
+ BKE_image_free((Image *)id, do_id_user);
break;
case ID_LT:
- BKE_lattice_free((Lattice *)id);
+ BKE_lattice_free((Lattice *)id, do_id_user);
break;
case ID_LA:
- BKE_lamp_free((Lamp *)id);
+ BKE_lamp_free((Lamp *)id, do_id_user);
break;
case ID_CA:
- BKE_camera_free((Camera *) id);
+ BKE_camera_free((Camera *) id, do_id_user);
break;
- case ID_IP:
+ case ID_IP: /* Deprecated. */
BKE_ipo_free((Ipo *)id);
break;
case ID_KE:
More information about the Bf-blender-cvs
mailing list