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-03-18 13:32:06 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-03-18 13:36:50 +0300
commitd0e28721b04a0235d4f6bfbe42f43672ff923444 (patch)
treeaf52e9e2f14a7e29eb40731b88584d00e309f821 /source/blender/blenkernel/intern/blendfile.c
parent66932a2c814037f897af56693efb68b6993406fb (diff)
Cleanup: Main id looping: add FOREACH_MAIN_LISTBASE macro.
We don't want to use flow control like `break` statement into the basic `FOREACH_MAIN_ID` macro, as this is a nested loop. When refined behavior is needed (like breaking whole iteration, or just skipping to next ID type), FOREACH_MAIN_LISTBASE and FOREACH_MAIN_LISTBASE_ID macros should be used instead. Based on D4382 by @campbellbarton (Other potential solution, using flow control macros: D4384).
Diffstat (limited to 'source/blender/blenkernel/intern/blendfile.c')
-rw-r--r--source/blender/blenkernel/intern/blendfile.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c
index 455f73c65c0..cd17911d65d 100644
--- a/source/blender/blenkernel/intern/blendfile.c
+++ b/source/blender/blenkernel/intern/blendfile.c
@@ -460,16 +460,21 @@ bool BKE_blendfile_read_from_memfile(
void BKE_blendfile_read_make_empty(bContext *C)
{
Main *bmain = CTX_data_main(C);
+ ListBase *lb;
ID *id;
- FOREACH_MAIN_ID_BEGIN(bmain, id)
+ FOREACH_MAIN_LISTBASE_BEGIN(bmain, lb)
{
- if (ELEM(GS(id->name), ID_SCE, ID_SCR, ID_WM, ID_WS)) {
- break; /* Only breaks iter on that ID type, and continues with IDs of next type. */
+ FOREACH_MAIN_LISTBASE_ID_BEGIN(lb, id)
+ {
+ if (ELEM(GS(id->name), ID_SCE, ID_SCR, ID_WM, ID_WS)) {
+ break;
+ }
+ BKE_id_delete(bmain, id);
}
- BKE_id_delete(bmain, id);
+ FOREACH_MAIN_LISTBASE_ID_END;
}
- FOREACH_MAIN_ID_END;
+ FOREACH_MAIN_LISTBASE_END;
}
/* only read the userdef from a .blend */