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 <bastien@blender.org>2021-10-06 17:41:08 +0300
committerBastien Montagne <bastien@blender.org>2021-10-06 17:53:20 +0300
commitb7dc0346aae849d2ba3f81839a6fd682ff24114a (patch)
tree3d46f78470d161cca14dc63f8019b49088ca6d17 /source/blender/blenkernel
parent0194e54fd3276a722ea5c2a8cdff6486c30dcbad (diff)
BMain: Add utils to check if a Main is empty or not.
Mostly intended for debug code (asserts).
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_main.h2
-rw-r--r--source/blender/blenkernel/intern/main.c11
2 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_main.h b/source/blender/blenkernel/BKE_main.h
index 93d5b5c5aa6..3108dfd5d8f 100644
--- a/source/blender/blenkernel/BKE_main.h
+++ b/source/blender/blenkernel/BKE_main.h
@@ -201,6 +201,8 @@ typedef struct Main {
struct Main *BKE_main_new(void);
void BKE_main_free(struct Main *mainvar);
+bool BKE_main_is_empty(struct Main *bmain);
+
void BKE_main_lock(struct Main *bmain);
void BKE_main_unlock(struct Main *bmain);
diff --git a/source/blender/blenkernel/intern/main.c b/source/blender/blenkernel/intern/main.c
index 9c3291edbcc..583feacc04b 100644
--- a/source/blender/blenkernel/intern/main.c
+++ b/source/blender/blenkernel/intern/main.c
@@ -205,6 +205,17 @@ void BKE_main_free(Main *mainvar)
MEM_freeN(mainvar);
}
+/* Check whether given `bmain` is empty or contains some IDs. */
+bool BKE_main_is_empty(struct Main *bmain)
+{
+ ID *id_iter;
+ FOREACH_MAIN_ID_BEGIN (bmain, id_iter) {
+ return false;
+ }
+ FOREACH_MAIN_ID_END;
+ return true;
+}
+
void BKE_main_lock(struct Main *bmain)
{
BLI_spin_lock((SpinLock *)bmain->lock);