[Bf-blender-cvs] [3bdd5551] render-layers: Massive fixup on BLI_iterator and the iterators using it

Dalai Felinto noreply at git.blender.org
Wed Jan 4 09:41:15 CET 2017


Commit: 3bdd555159a79e1c533068c6e75d7f7f23b8cff9
Author: Dalai Felinto
Date:   Tue Jan 3 18:02:58 2017 +0100
Branches: render-layers
https://developer.blender.org/rB3bdd555159a79e1c533068c6e75d7f7f23b8cff9

Massive fixup on BLI_iterator and the iterators using it

===================================================================

M	source/blender/blenkernel/BKE_collection.h
M	source/blender/blenkernel/intern/collection.c
M	source/blender/blenlib/BLI_iterator.h

===================================================================

diff --git a/source/blender/blenkernel/BKE_collection.h b/source/blender/blenkernel/BKE_collection.h
index 267e621..5f09ad9 100644
--- a/source/blender/blenkernel/BKE_collection.h
+++ b/source/blender/blenkernel/BKE_collection.h
@@ -75,9 +75,9 @@ void BKE_scene_objects_Iterator_end(struct Iterator *iter);
 
 #define FOREACH_SCENE_OBJECT(scene, _ob)                                      \
 	ITER_BEGIN(BKE_scene_objects_Iterator_begin,                              \
-	BKE_scene_objects_Iterator_next,                                          \
-	BKE_scene_objects_Iterator_end,                                           \
-	scene, _ob)
+	           BKE_scene_objects_Iterator_next,                               \
+	           BKE_scene_objects_Iterator_end,                                \
+	           scene, _ob)
 
 #define FOREACH_SCENE_OBJECT_END                                              \
 	ITER_END
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index d1a23da..853e8df 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -345,6 +345,10 @@ void BKE_scene_objects_Iterator_begin(Iterator *iter, void *data_in)
 
 	SceneCollection *sc = data->scene_collection_iter.current;
 	iter->current = sc->objects.first;
+
+	if (iter->current == NULL) {
+		BKE_scene_objects_Iterator_next(iter);
+	}
 }
 
 /**
diff --git a/source/blender/blenlib/BLI_iterator.h b/source/blender/blenlib/BLI_iterator.h
index 10ad49b..cfa303b 100644
--- a/source/blender/blenlib/BLI_iterator.h
+++ b/source/blender/blenlib/BLI_iterator.h
@@ -44,7 +44,7 @@ typedef void (*IteratorBeginCb)(Iterator *iter, void *data_in);
 	     iter_macro.valid;                                                           \
 	     callback_next(&iter_macro))                                                 \
     {                                                                                \
-		_data_out = iter_macro.data;
+		_data_out = iter_macro.current;
 
 #define ITER_END                                                                     \
 	}                                                                                \




More information about the Bf-blender-cvs mailing list