[Bf-blender-cvs] [b5cbc8bb606] blender2.8: Fix FOREACH_OBJECT_RENDERABLE going over the same object twice
Dalai Felinto
noreply at git.blender.org
Tue Jan 30 14:27:27 CET 2018
Commit: b5cbc8bb606654a21e25cb616d60c89ac61c65a9
Author: Dalai Felinto
Date: Tue Jan 30 11:23:50 2018 -0200
Branches: blender2.8
https://developer.blender.org/rBb5cbc8bb606654a21e25cb616d60c89ac61c65a9
Fix FOREACH_OBJECT_RENDERABLE going over the same object twice
Which is really silly because we were already tagging the ids, but simply
never checking them back.
===================================================================
M source/blender/blenkernel/intern/layer.c
===================================================================
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index e6ef3c5ce69..d9794ecbd69 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -1970,10 +1970,11 @@ void BKE_renderable_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
{
ObjectsRenderableIteratorData *data = data_in;
+ /* Tag objects to prevent going over the same object twice. */
for (Scene *scene = data->scene; scene; scene = scene->set) {
for (ViewLayer *view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
- base->object->id.flag |= LIB_TAG_DOIT;
+ base->object->id.flag |= LIB_TAG_DOIT;
}
}
}
@@ -2002,11 +2003,17 @@ void BKE_renderable_objects_iterator_next(BLI_Iterator *iter)
if (base != NULL) {
Object *ob = base->object;
- iter->current = ob;
+ /* We need to set the iter.base even if the rest fail otherwise
+ * we keep checking the exactly same base over and over again. */
data->iter.base = base;
- if ((base->flag & BASE_VISIBLED) != 0) {
- iter->skip = false;
+ if (ob->id.flag & LIB_TAG_DOIT) {
+ ob->id.flag &= ~LIB_TAG_DOIT;
+
+ if ((base->flag & BASE_VISIBLED) != 0) {
+ iter->skip = false;
+ iter->current = ob;
+ }
}
return;
}
More information about the Bf-blender-cvs
mailing list