[Bf-blender-cvs] [3438a84] soc-2016-layer_manager: Fix compiling without WITH_ADVANCED_LAYERS enabled (tm)

Julian Eisel noreply at git.blender.org
Sat Jul 9 18:24:52 CEST 2016


Commit: 3438a84277d7176d2169786b1eb1fee853b975b5
Author: Julian Eisel
Date:   Sat Jul 9 18:23:51 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rB3438a84277d7176d2169786b1eb1fee853b975b5

Fix compiling without WITH_ADVANCED_LAYERS enabled (tm)

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

M	source/blender/blenkernel/BKE_object.h
M	source/blender/blenkernel/intern/scene.c
M	source/blender/editors/object/object_add.c
M	source/blender/editors/space_layers/CMakeLists.txt
M	source/blender/editors/space_view3d/view3d_draw.c

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

diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 8d6a1ca..e2d63c9 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -274,18 +274,25 @@ bool BKE_object_modifier_update_subframe(struct Scene *scene, struct Object *ob,
 /* -------------------------------------------------------------------- */
 /* Object Layers */
 
+#ifdef WITH_ADVANCED_LAYERS
 #define BKE_OBJECTLAYER_BASES_ITER_START(oblayer, idx_name, base_name) \
 	for (unsigned int idx_name = 0; idx_name < oblayer->tot_bases; idx_name++) { \
 		Base *base_name = oblayer->bases[idx_name];
 #define BKE_OBJECTLAYER_BASES_ITER_END } (void)0
+#endif
 
 /* Use this if BKE_BASES_ITER_START doesn't give enough control over variable names.*/
-#define BKE_BASES_ITER_START_EX(scene, layeridx_name, litem_name, oblayer_name, baseidx_name, base_name) \
+#ifdef WITH_ADVANCED_LAYERS
+  #define BKE_BASES_ITER_START_EX(scene, layeridx_name, litem_name, oblayer_name, baseidx_name, base_name) \
 	BKE_LAYERTREE_ITER_START(scene->object_layers, 0, layeridx_name, litem_name) \
 	{ \
 		if (litem_name->type->type == LAYER_ITEMTYPE_LAYER) { \
 			LayerTypeObject *oblayer_name = (LayerTypeObject *)litem_name; \
 			BKE_OBJECTLAYER_BASES_ITER_START(oblayer_name, baseidx_name, base_name)
+#else
+  #define BKE_BASES_ITER_START_EX(scene, layeridx_name, litem_name, oblayer_name, baseidx_name, base_name) \
+	for (Base *base_name = scene->base.first; base_name; base_name = base_name->next) {
+#endif /* WITH_ADVANCED_LAYERS */
 
 /* Start iterating over all bases of the scene. This is basically a wrapper around layer
  * tree and object layer iterator to make access a bit easier. Uses default variable names. */
@@ -293,11 +300,15 @@ bool BKE_object_modifier_update_subframe(struct Scene *scene, struct Object *ob,
 	BKE_BASES_ITER_START_EX(scene, i, litem, oblayer, j, base)
 
 /* End BKE_BASES_ITER_START or BKE_BASES_ITER_START_EX. */
-#define BKE_BASES_ITER_END \
+#ifdef WITH_ADVANCED_LAYERS
+  #define BKE_BASES_ITER_END \
 			BKE_OBJECTLAYER_BASES_ITER_END; \
 		} \
 	} \
 	BKE_LAYERTREE_ITER_END /* ends with (void)0 */
+#else
+  #define BKE_BASES_ITER_END } (void)0
+#endif
 
 struct LayerTreeItem *BKE_objectlayer_add(struct LayerTree *tree, struct LayerTreeItem *parent, const char *name);
 void BKE_objectlayer_free(struct LayerTreeItem *litem);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index c3fd1b9..88e9736 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1148,8 +1148,10 @@ Base *BKE_scene_base_add(Scene *sce, Object *ob)
 	Base *b = MEM_callocN(sizeof(*b), __func__);
 	BLI_addhead(&sce->base, b);
 
+#ifdef WITH_ADVANCED_LAYERS
 	BLI_assert(sce->object_layers->active_layer != NULL); /* XXX quite easy to break currently */
 	BKE_objectlayer_base_assign(b, sce->object_layers->active_layer, false);
+#endif
 
 	b->object = ob;
 	b->flag = ob->flag;
@@ -1166,8 +1168,10 @@ void BKE_scene_base_unlink(Scene *sce, Base *base)
 	/* remove rigid body object from world before removing object */
 	if (base->object->rigidbody_object)
 		BKE_rigidbody_remove_object(sce, base->object);
+#ifdef WITH_ADVANCED_LAYERS
 	if (base->layer)
 		BKE_objectlayer_base_unassign(base);
+#endif
 
 	BLI_remlink(&sce->base, base);
 	if (sce->basact == base)
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index c7f2178..03fb530 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -1918,8 +1918,10 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base
 		*basen = *base;
 		BLI_addhead(&scene->base, basen);   /* addhead: prevent eternal loop */
 		basen->object = obn;
+#ifdef WITH_ADVANCED_LAYERS
 		BLI_assert(scene->object_layers->active_layer);
 		BKE_objectlayer_base_assign(basen, scene->object_layers->active_layer, false);
+#endif
 
 		/* 1) duplis should end up in same group as the original
 		 * 2) Rigid Body sim participants MUST always be part of a group...
diff --git a/source/blender/editors/space_layers/CMakeLists.txt b/source/blender/editors/space_layers/CMakeLists.txt
index 22d0449..e5299f8 100644
--- a/source/blender/editors/space_layers/CMakeLists.txt
+++ b/source/blender/editors/space_layers/CMakeLists.txt
@@ -44,4 +44,8 @@ set(SRC
 	layers_intern.h
 )
 
+if(WITH_ADVANCED_LAYERS)
+	add_definitions(-DWITH_ADVANCED_LAYERS)
+endif()
+
 blender_add_lib(bf_editor_space_layers "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 43b8b20..27991f6 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2844,7 +2844,8 @@ static void view3d_objectlayers_drawstep_draw(
 		else if (drawstep == OB_DRAWSTEP_DUPLI_UNSEL) {
 			*r_lay_used |= base->lay;
 		}
-		BKE_BASES_ITER_END;
+	}
+	BKE_BASES_ITER_END;
 #endif
 }




More information about the Bf-blender-cvs mailing list