Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2019-01-14 18:22:27 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-01-15 13:09:16 +0300
commitc710ca89332bb392ccff8d6bf0be19255ba16b0c (patch)
treefe9fe43608568e97c530ef6253d5cbdae6b45828 /source/blender/blenkernel/intern/library_remap.c
parentcae3750ff95ff2c68f666b949ada969613200359 (diff)
Cleanup: Remove deprecated BKE_libblock_free(_ex) functions, document BKE_id_free(_ex) ones.
Diffstat (limited to 'source/blender/blenkernel/intern/library_remap.c')
-rw-r--r--source/blender/blenkernel/intern/library_remap.c73
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 */