[Bf-blender-cvs] [103b6ae] temp_localview_split: Use inline functions instead of macros for local view utilities

Julian Eisel noreply at git.blender.org
Thu Aug 4 17:26:13 CEST 2016


Commit: 103b6aedf981f68185b2fc7ef610d842e37df70c
Author: Julian Eisel
Date:   Thu Aug 4 17:25:38 2016 +0200
Branches: temp_localview_split
https://developer.blender.org/rB103b6aedf981f68185b2fc7ef610d842e37df70c

Use inline functions instead of macros for local view utilities

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

M	source/blender/blenkernel/BKE_localview.h
M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/gpencil/gpencil_convert.c
M	source/blender/editors/object/object_add.c
M	source/blender/editors/object/object_edit.c
M	source/blender/editors/object/object_relations.c
M	source/blender/editors/render/render_internal.c
M	source/blender/editors/screen/screen_context.c
M	source/blender/editors/sculpt_paint/paint_image_proj.c
M	source/blender/editors/space_view3d/drawobject.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/editors/space_view3d/view3d_view.c
M	source/blender/gpu/intern/gpu_draw.c
M	source/blender/render/intern/source/convertblender.c
M	source/blender/render/intern/source/envmap.c

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

diff --git a/source/blender/blenkernel/BKE_localview.h b/source/blender/blenkernel/BKE_localview.h
index 9cd5352..327810e 100644
--- a/source/blender/blenkernel/BKE_localview.h
+++ b/source/blender/blenkernel/BKE_localview.h
@@ -23,31 +23,67 @@
 
 /** \file BKE_localview.h
  *  \ingroup bke
- *  \brief Local view utility macros
+ *  \brief Local view utility functions
  *
  * Even though it's possible to access LocalView DNA structs directly,
- * please only access using these macros (or extend it if needed).
+ * please only access using these functions (or extend it if needed).
  */
 
+#include "BLI_compiler_attrs.h"
+#include "BLI_utildefines.h"
+
+#include "DNA_object_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_view3d_types.h"
+
+
+/* Forcing inline as some of these are called a lot, mostly in loops even. */
+
+BLI_INLINE bool BKE_localview_info_cmp(LocalViewInfo a, LocalViewInfo b) ATTR_WARN_UNUSED_RESULT;
+BLI_INLINE bool BKE_localview_is_object_visible(View3D *v3d, Object *ob) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
+BLI_INLINE bool BKE_localview_is_valid(LocalViewInfo localview) ATTR_WARN_UNUSED_RESULT;
+
+BLI_INLINE void BKE_localview_object_assign(View3D *v3d, Object *ob) ATTR_NONNULL();
+BLI_INLINE void BKE_localview_object_unassign(View3D *v3d, Object *ob) ATTR_NONNULL();
+
+
 /* visibility checks */
-#define BKE_LOCALVIEW_INFO_CMP(a, b) \
-	((a).viewbits & (b).viewbits)
-#define BKE_LOCALVIEW_IS_OBJECT_VISIBLE(v3d, ob) \
-	(((v3d)->localviewd == NULL) || BKE_LOCALVIEW_INFO_CMP((v3d)->localviewd->info, (ob)->localview))
-
-/* Check if info defines a visible local view */
-#define BKE_LOCALVIEW_IS_VALID(info) \
-	((info).viewbits != 0)
-
-/* Adjust local view info of ob to be visible if v3d is in local view */
-#define BKE_LOCALVIEW_OBJECT_ASSIGN(v3d, ob) \
-	if ((v3d)->localviewd) { \
-		(ob)->localview.viewbits |= (v3d)->localviewd->info.viewbits; \
-	} (void)0
-/* Remove object from local view */
-#define BKE_LOCALVIEW_OBJECT_UNASSIGN(v3d, ob) \
-	if ((v3d)->localviewd) { \
-		(ob)->localview.viewbits &= ~(v3d)->localviewd->info.viewbits; \
-	} (void)0
+BLI_INLINE bool BKE_localview_info_cmp(LocalViewInfo a, LocalViewInfo b)
+{
+	return (a.viewbits & b.viewbits) != 0;
+}
+
+BLI_INLINE bool BKE_localview_is_object_visible(View3D *v3d, Object *ob)
+{
+	return (v3d->localviewd == NULL) || BKE_localview_info_cmp(v3d->localviewd->info, ob->localview);
+}
+
+/**
+ * Check if \a localview defines a visible local view.
+ */
+BLI_INLINE bool BKE_localview_is_valid(LocalViewInfo localview)
+{
+	return localview.viewbits != 0;
+}
+
+/**
+ * Adjust local view info of \a ob to be visible if \a v3d is in local view
+ */
+BLI_INLINE void BKE_localview_object_assign(View3D *v3d, Object *ob)
+{
+	if (v3d->localviewd) { \
+		ob->localview.viewbits |= v3d->localviewd->info.viewbits;
+	}
+}
+
+/**
+ * Remove \a from local view of \a v3d.
+ */
+BLI_INLINE void BKE_localview_object_unassign(View3D *v3d, Object *ob)
+{
+	if (v3d->localviewd) {
+		ob->localview.viewbits &= ~v3d->localviewd->info.viewbits;
+	}
+}
 
 #endif // __BKE_LOCALVIEW_H__
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 2a25123..a231de8 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -9739,8 +9739,8 @@ static void give_base_to_objects(Main *mainvar, Scene *scene, View3D *v3d, Libra
 				/* Add to localview (only if FILE_ACTIVELAY, this is how it was
 				 * done when local view was using Object.lay bitfield) */
 				if (v3d && (flag & FILE_ACTIVELAY)) {
-					/* macro checks if v3d is in local view */
-					BKE_LOCALVIEW_OBJECT_ASSIGN(v3d, ob);
+					/* function checks if v3d is in local view */
+					BKE_localview_object_assign(v3d, ob);
 				}
 
 				base->lay = ob->lay;
@@ -9776,8 +9776,8 @@ static void give_base_to_groups(
 			ob->type = OB_EMPTY;
 			ob->lay = active_lay;
 			if (v3d) {
-				/* Add to localview (macro checks if v3d is in local view) */
-				BKE_LOCALVIEW_OBJECT_ASSIGN(v3d, ob);
+				/* Add to localview (function checks if v3d is in local view) */
+				BKE_localview_object_assign(v3d, ob);
 			}
 
 			/* assign the base */
@@ -9879,8 +9879,8 @@ static void link_object_postprocess(ID *id, Scene *scene, View3D *v3d, const sho
 			/* Add to localview (only if FILE_ACTIVELAY, this is how it was
 			 * done when local view was using Object.lay bitfield) */
 			if (v3d) {
-				/* macro checks if v3d is in local view */
-				BKE_LOCALVIEW_OBJECT_ASSIGN(v3d, ob);
+				/* function checks if v3d is in local view */
+				BKE_localview_object_assign(v3d, ob);
 			}
 		}
 
diff --git a/source/blender/editors/gpencil/gpencil_convert.c b/source/blender/editors/gpencil/gpencil_convert.c
index 5357991..cfbf98f 100644
--- a/source/blender/editors/gpencil/gpencil_convert.c
+++ b/source/blender/editors/gpencil/gpencil_convert.c
@@ -1220,8 +1220,8 @@ static void gp_layer_to_curve(bContext *C, ReportList *reports, bGPdata *gpd, bG
 	base_new->lay  = ob->lay  = base_orig ? base_orig->lay : BKE_screen_view3d_layer_active(v3d, scene);
 	base_new->flag = ob->flag = base_new->flag | SELECT;
 	if (v3d) {
-		/* Add to localview (macro checks if v3d is in local view) */
-		BKE_LOCALVIEW_OBJECT_ASSIGN(v3d, ob);
+		/* Add to localview (function checks if v3d is in local view) */
+		BKE_localview_object_assign(v3d, ob);
 	}
 }
 
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index 1096e3b..25c9d12 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -419,7 +419,7 @@ Object *ED_object_add_type(
 
 	/* Add to local view if needed */
 	if (v3d) {
-		BKE_LOCALVIEW_OBJECT_ASSIGN(v3d, ob);
+		BKE_localview_object_assign(v3d, ob);
 	}
 
 	/* more editor stuff */
@@ -2275,8 +2275,8 @@ static int add_named_exec(bContext *C, wmOperator *op)
 	basen->lay = basen->object->lay = BKE_screen_view3d_layer_active(v3d, scene);
 	basen->object->restrictflag &= ~OB_RESTRICT_VIEW;
 	if (v3d) {
-		/* Add to localview (macro checks if v3d is in local view) */
-		BKE_LOCALVIEW_OBJECT_ASSIGN(v3d, basen->object);
+		/* Add to localview (function checks if v3d is in local view) */
+		BKE_localview_object_assign(v3d, basen->object);
 	}
 
 	if (event) {
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index e48c1d6..8d441ab 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -145,7 +145,7 @@ static int object_hide_view_clear_exec(bContext *C, wmOperator *UNUSED(op))
 	/* XXX need a context loop to handle such cases */
 	for (base = FIRSTBASE; base; base = base->next) {
 		if ((base->lay & v3d->lay) &&
-		    BKE_LOCALVIEW_IS_OBJECT_VISIBLE(v3d, base->object) &&
+		    BKE_localview_is_object_visible(v3d, base->object) &&
 		    (base->object->restrictflag & OB_RESTRICT_VIEW))
 		{
 			if (!(base->object->restrictflag & OB_RESTRICT_SELECT)) {
@@ -486,7 +486,7 @@ void ED_object_editmode_enter(bContext *C, int flag)
 			return;
 		}
 		else if (v3d) {
-			if ((base->lay & v3d->lay) == 0 || !BKE_LOCALVIEW_IS_OBJECT_VISIBLE(v3d, base->object)) {
+			if ((base->lay & v3d->lay) == 0 || !BKE_localview_is_object_visible(v3d, base->object)) {
 				return;
 			}
 		}
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 38dff0f..49ef344 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1366,7 +1366,7 @@ static int move_to_layer_exec(bContext *C, wmOperator *op)
 		/* Move object out of local view and deselect */
 		/* TODO maybe this can be done a bit nicer? */
 		if (v3d && v3d->localviewd) {
-			BKE_LOCALVIEW_OBJECT_UNASSIGN(v3d, base->object);
+			BKE_localview_object_unassign(v3d, base->object);
 			base->object->flag &= ~SELECT;
 			base->flag &= ~SELECT;
 		}
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 2ad65df..7d80167 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -793,7 +793,7 @@ static void clean_viewport_memory(Main *bmain, Scene *scene, LocalViewInfo *loca
 	}
 
 	for (SETLOOPER(scene, sce_iter, base)) {
-		if ((base->lay & renderlay) == 0 || BKE_LOCALVIEW_INFO_CMP(*localview, base->object->localview) == 0) {
+		if ((base->lay & renderlay) == 0 || BKE_localview_info_cmp(*localview, base->object->localview) == 0) {
 			continue;
 		}
 		if (RE_allow_render_generic_object(base->object)) {
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index 04b22ca..f005a6b 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -119,8 +119,8 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 
 /* helper to check if base is visible considering layer and local view */
 #define LAYER_AND_LOCALVIEW_CHECK(localviews, base, lay) \
-	(BKE_LOCALVIEW_IS_VALID(localviews) ? \
-	     BKE_LOCALVIEW_INFO_CMP(localviews, base->object->localview) : (base->lay & lay))
+	(BKE_localview_is_valid(localviews) ? \
+	     BKE_localview_info_cmp(localviews, base->object->localview) : (base->lay & lay))
 
 	if (CTX_data_dir(member)) {
 		CTX_data_dir_set(result, screen_context_dir);
diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c b/source/blender/editors/sculpt_paint/paint_image_proj.c
index a5d3b22..4a3a8a5 100644
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@ -5177,7 +5177,7 @@ void *paint_proj_new_stroke(bContext *C, Object *ob, const float mouse[2], int m
 
 		if ((ps->ob == NULL) ||
 		    !(ps->ob->lay & ps->v3d->lay) ||
-		    !BKE_LOCALVIEW_IS_OBJECT_VISIBLE(ps->v3d, ps->ob))
+		    !BKE_localview_is_object_visible(ps->v3d, ps->ob))
 		{
 			ps_handle->ps_views_tot = i + 1;
 			goto fail;
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list