[Bf-blender-cvs] [55f62b94f86] blender2.8: DRW: minor tweaks to mode checking

Campbell Barton noreply at git.blender.org
Thu Oct 4 01:38:28 CEST 2018


Commit: 55f62b94f861b3284ae813fd4d0ca9f1458f7ae5
Author: Campbell Barton
Date:   Thu Oct 4 09:24:35 2018 +1000
Branches: blender2.8
https://developer.blender.org/rB55f62b94f861b3284ae813fd4d0ca9f1458f7ae5

DRW: minor tweaks to mode checking

Avoid accessing object mode via the view layer active object
when drawing since it's done everywhere we store the active object mode
in the draw-context.

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

M	source/blender/draw/intern/draw_view.c
M	source/blender/draw/modes/object_mode.c
M	source/blender/makesdna/DNA_object_enums.h

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

diff --git a/source/blender/draw/intern/draw_view.c b/source/blender/draw/intern/draw_view.c
index a20460db356..d77620bc47b 100644
--- a/source/blender/draw/intern/draw_view.c
+++ b/source/blender/draw/intern/draw_view.c
@@ -136,17 +136,16 @@ void DRW_draw_background(void)
 
 static bool is_cursor_visible(const DRWContextState *draw_ctx, Scene *scene, ViewLayer *view_layer)
 {
-	Object *ob = OBACT(view_layer);
 	View3D *v3d = draw_ctx->v3d;
 	if ((v3d->flag2 & V3D_RENDER_OVERRIDE) || (v3d->overlay.flag & V3D_OVERLAY_HIDE_CURSOR)) {
 		return false;
 	}
 
 	/* don't draw cursor in paint modes, but with a few exceptions */
-	if (ob && draw_ctx->object_mode & OB_MODE_ALL_PAINT) {
+	if (draw_ctx->object_mode & OB_MODE_ALL_PAINT) {
 		/* exception: object is in weight paint and has deforming armature in pose mode */
 		if (draw_ctx->object_mode & OB_MODE_WEIGHT_PAINT) {
-			if (BKE_object_pose_armature_get(ob) != NULL) {
+			if (BKE_object_pose_armature_get(draw_ctx->obact) != NULL) {
 				return true;
 			}
 		}
@@ -164,10 +163,8 @@ static bool is_cursor_visible(const DRWContextState *draw_ctx, Scene *scene, Vie
 		/* no exception met? then don't draw cursor! */
 		return false;
 	}
-
-	/* grease pencil hide always in some modes */
-	if ((ob) && (ob->mode == OB_MODE_GPENCIL_WEIGHT))
-	{
+	else if (draw_ctx->object_mode & OB_MODE_GPENCIL_WEIGHT) {
+		/* grease pencil hide always in some modes */
 		return false;
 	}
 
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index f18125af005..2df2ad57073 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -2373,16 +2373,6 @@ static void DRW_shgroup_object_center(OBJECT_StorageList *stl, Object *ob, ViewL
 	if (v3d->overlay.flag & V3D_OVERLAY_HIDE_OBJECT_ORIGINS) {
 		return;
 	}
-
-	/* grease pencil in some modes hide always */
-	if ((OBACT(view_layer)) &&
-		((OBACT(view_layer)->mode == OB_MODE_GPENCIL_PAINT) ||
-		 (OBACT(view_layer)->mode == OB_MODE_GPENCIL_SCULPT) ||
-		 (OBACT(view_layer)->mode == OB_MODE_GPENCIL_WEIGHT)))
-	{
-		return;
-	}
-
 	const bool is_library = ob->id.us > 1 || ID_IS_LINKED(ob);
 	DRWShadingGroup *shgroup;
 
@@ -2762,13 +2752,11 @@ static void OBJECT_cache_populate(void *vedata, Object *ob)
 			DRW_shgroup_empty(sgl, ob, view_layer);
 			break;
 		case OB_GPENCIL:
-			/* in all modes except object mode hide always */
-			if ((OBACT(view_layer)) &&
-			    (OBACT(view_layer)->mode != OB_MODE_OBJECT))
-			{
+			if (hide_object_extra) {
 				break;
 			}
-			if (hide_object_extra) {
+			/* in all modes except object mode hide always */
+			if (draw_ctx->object_mode != OB_MODE_OBJECT) {
 				break;
 			}
 			DRW_shgroup_gpencil(sgl, ob, view_layer);
@@ -2816,7 +2804,7 @@ static void OBJECT_cache_populate(void *vedata, Object *ob)
 
 	/* don't show object extras in set's */
 	if ((ob->base_flag & (BASE_FROM_SET | BASE_FROMDUPLI)) == 0) {
-		if ((draw_ctx->object_mode & OB_MODE_ALL_PAINT) == 0) {
+		if ((draw_ctx->object_mode & (OB_MODE_ALL_PAINT | OB_MODE_ALL_PAINT_GPENCIL)) == 0) {
 			DRW_shgroup_object_center(stl, ob, view_layer, v3d);
 		}
 
diff --git a/source/blender/makesdna/DNA_object_enums.h b/source/blender/makesdna/DNA_object_enums.h
index 01228376174..8a7016ccd13 100644
--- a/source/blender/makesdna/DNA_object_enums.h
+++ b/source/blender/makesdna/DNA_object_enums.h
@@ -46,6 +46,8 @@ typedef enum eObjectMode {
 /* Any mode where the brush system is used. */
 #define OB_MODE_ALL_PAINT (OB_MODE_SCULPT | OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT | OB_MODE_TEXTURE_PAINT)
 
+#define OB_MODE_ALL_PAINT_GPENCIL (OB_MODE_GPENCIL_PAINT | OB_MODE_GPENCIL_SCULPT | OB_MODE_GPENCIL_WEIGHT)
+
 /* Any mode that uses Object.sculpt. */
 #define OB_MODE_ALL_SCULPT (OB_MODE_SCULPT | OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)



More information about the Bf-blender-cvs mailing list