diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-03-18 13:32:06 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-03-18 13:36:50 +0300 |
commit | d0e28721b04a0235d4f6bfbe42f43672ff923444 (patch) | |
tree | af52e9e2f14a7e29eb40731b88584d00e309f821 /source/blender/blenkernel/intern/library_query.c | |
parent | 66932a2c814037f897af56693efb68b6993406fb (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/library_query.c')
-rw-r--r-- | source/blender/blenkernel/intern/library_query.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c index 72e9d747206..9861b232dd9 100644 --- a/source/blender/blenkernel/intern/library_query.c +++ b/source/blender/blenkernel/intern/library_query.c @@ -1384,19 +1384,16 @@ void BKE_library_unused_linked_data_set_tag(Main *bmain, const bool do_init_tag) } for (bool do_loop = true; do_loop; ) { - bool do_break = false; do_loop = false; - FOREACH_MAIN_ID_BREAKABLE_BEGIN(bmain, id, do_break) + FOREACH_MAIN_ID_BEGIN(bmain, id) { + /* We only want to check that ID if it is currently known as used... */ if ((id->tag & LIB_TAG_DOIT) == 0) { BKE_library_foreach_ID_link( bmain, id, foreach_libblock_used_linked_data_tag_clear_cb, &do_loop, IDWALK_READONLY); } - /* Else it is an unused ID (so far), no need to check it further. */ - do_break = true; - break; } - FOREACH_MAIN_ID_BREAKABLE_END; + FOREACH_MAIN_ID_END; } } |