diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-01-14 18:22:27 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-01-15 13:09:16 +0300 |
commit | c710ca89332bb392ccff8d6bf0be19255ba16b0c (patch) | |
tree | fe9fe43608568e97c530ef6253d5cbdae6b45828 /source/blender/blenkernel/intern | |
parent | cae3750ff95ff2c68f666b949ada969613200359 (diff) |
Cleanup: Remove deprecated BKE_libblock_free(_ex) functions, document BKE_id_free(_ex) ones.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/library_remap.c | 73 |
1 files changed, 16 insertions, 57 deletions
diff --git a/source/blender/blenkernel/intern/library_remap.c b/source/blender/blenkernel/intern/library_remap.c index e7afd980aa4..2ee4e2890a1 100644 --- a/source/blender/blenkernel/intern/library_remap.c +++ b/source/blender/blenkernel/intern/library_remap.c @@ -807,7 +807,17 @@ void BKE_libblock_free_datablock(ID *id, const int UNUSED(flag)) } } - +/** + * Complete ID freeing, extended version for corner cases. + * Can override default (and safe!) freeing process, to gain some speed up. + * + * \param bmain Main database containing the freed ID, can be NULL in case it's a temp ID outside of any Main. + * \param idv Pointer to ID to be freed. + * \param flag Set of \a LIB_ID_FREE_... flags controlling/overriding usual freeing process, + * 0 to get default safe behavior. + * \param use_flag_from_idtag Still use freeing info flags from given ID datablock, + * even if some overriding ones are passed in \a falg parameter. + */ void BKE_id_free_ex(Main *bmain, void *idv, int flag, const bool use_flag_from_idtag) { ID *id = idv; @@ -891,66 +901,15 @@ void BKE_id_free_ex(Main *bmain, void *idv, int flag, const bool use_flag_from_i } } -void BKE_id_free(Main *bmain, void *idv) -{ - BKE_id_free_ex(bmain, idv, 0, true); -} - /** - * used in headerbuttons.c image.c mesh.c screen.c sound.c and library.c + * Complete ID freeing, should be usable in most cases (even for out-of-Main IDs). * - * \param do_id_user: if \a true, try to release other ID's 'references' hold by \a idv. - * (only applies to main database) - * \param do_ui_user: similar to do_id_user but makes sure UI does not hold references to - * \a id. + * \param bmain Main database containing the freed ID, can be NULL in case it's a temp ID outside of any Main. + * \param idv Pointer to ID to be freed. */ -void BKE_libblock_free_ex(Main *bmain, void *idv, const bool do_id_user, const bool do_ui_user) -{ - ID *id = idv; - short type = GS(id->name); - ListBase *lb = which_libbase(bmain, type); - - DEG_id_type_tag(bmain, type); - -#ifdef WITH_PYTHON -#ifdef WITH_PYTHON_SAFETY - BPY_id_release(id); -#endif - if (id->py_instance) { - BPY_DECREF_RNA_INVALIDATE(id->py_instance); - } -#endif - - if (do_id_user) { - BKE_libblock_relink_ex(bmain, id, NULL, NULL, true); - } - - BKE_libblock_free_datablock(id, 0); - - /* avoid notifying on removed data */ - BKE_main_lock(bmain); - - if (do_ui_user) { - if (free_notifier_reference_cb) { - free_notifier_reference_cb(id); - } - - if (remap_editor_id_reference_cb) { - remap_editor_id_reference_cb(id, NULL); - } - } - - BLI_remlink(lb, id); - - BKE_libblock_free_data(id, do_id_user); - BKE_main_unlock(bmain); - - MEM_freeN(id); -} - -void BKE_libblock_free(Main *bmain, void *idv) +void BKE_id_free(Main *bmain, void *idv) { - BKE_id_free(bmain, idv); + BKE_id_free_ex(bmain, idv, 0, true); } void BKE_libblock_free_us(Main *bmain, void *idv) /* test users */ |