[Bf-blender-cvs] [da9e08847c5] temp-workspace-object-mode-removal: Pass object mode instead of eval_ctx for brush update function

Campbell Barton noreply at git.blender.org
Wed Feb 7 03:30:19 CET 2018


Commit: da9e08847c535173fa5ca31487ff9d41981ebd4f
Author: Campbell Barton
Date:   Wed Feb 7 13:29:26 2018 +1100
Branches: temp-workspace-object-mode-removal
https://developer.blender.org/rBda9e08847c535173fa5ca31487ff9d41981ebd4f

Pass object mode instead of eval_ctx for brush update function

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

M	source/blender/blenkernel/BKE_paint.h
M	source/blender/blenkernel/intern/paint.c
M	source/blender/editors/interface/interface_handlers.c
M	source/blender/editors/render/render_update.c
M	source/blender/editors/sculpt_paint/paint_utils.c
M	source/blender/makesrna/intern/rna_brush.c
M	source/blender/makesrna/intern/rna_texture.c

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

diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index c1f4a909b54..17f6438870c 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -94,10 +94,9 @@ typedef enum eOverlayControlFlags {
 						     PAINT_OVERLAY_OVERRIDE_CURSOR)
 
 void BKE_paint_invalidate_overlay_tex(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct ViewLayer *view_layer, const struct Tex *tex);
+        struct Scene *scene, struct ViewLayer *view_layer, const struct Tex *tex, eObjectMode object_mode);
 void BKE_paint_invalidate_cursor_overlay(
-        const struct EvaluationContext *eval_ctx,
-        struct Scene *scene, struct ViewLayer *view_layer, struct CurveMapping *curve);
+        struct Scene *scene, struct ViewLayer *view_layer, struct CurveMapping *curve, eObjectMode object_mode);
 void BKE_paint_invalidate_overlay_all(void);
 eOverlayControlFlags BKE_paint_get_overlay_flags(void);
 void BKE_paint_reset_overlay_invalid(eOverlayControlFlags flag);
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 8e29457bf3c..507c43bf251 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -76,9 +76,10 @@ const char PAINT_CURSOR_TEXTURE_PAINT[3] = {255, 255, 255};
 static eOverlayControlFlags overlay_flags = 0;
 
 void BKE_paint_invalidate_overlay_tex(
-        const EvaluationContext *eval_ctx, Scene *scene, ViewLayer *view_layer, const Tex *tex)
+        Scene *scene, ViewLayer *view_layer, const Tex *tex, eObjectMode object_mode)
 {
-	Paint *p = BKE_paint_get_active(scene, view_layer, eval_ctx->object_mode);
+	/* TODO/OBMODE: enumerate multiple modes */
+	Paint *p = BKE_paint_get_active(scene, view_layer, object_mode);
 	Brush *br = p->brush;
 
 	if (!br)
@@ -91,9 +92,10 @@ void BKE_paint_invalidate_overlay_tex(
 }
 
 void BKE_paint_invalidate_cursor_overlay(
-        const EvaluationContext *eval_ctx, Scene *scene, ViewLayer *view_layer, CurveMapping *curve)
+        Scene *scene, ViewLayer *view_layer, CurveMapping *curve, eObjectMode object_mode)
 {
-	Paint *p = BKE_paint_get_active(scene, view_layer, eval_ctx->object_mode);
+	/* TODO/OBMODE: enumerate multiple modes */
+	Paint *p = BKE_paint_get_active(scene, view_layer, object_mode);
 	Brush *br = p->brush;
 
 	if (br && br->curve == curve)
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 23dd48ed257..3a01ff16297 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -46,6 +46,7 @@
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_screen_types.h"
+#include "DNA_workspace_types.h"
 
 #include "BLI_math.h"
 #include "BLI_listbase.h"
@@ -5232,12 +5233,11 @@ static int ui_do_but_COLOR(
 		if (event->type == LEFTMOUSE && event->val == KM_RELEASE) {
 			if ((int)(but->a1) == UI_PALETTE_COLOR) {
 				if (!event->ctrl) {
-					EvaluationContext eval_ctx;
-					CTX_data_eval_ctx(C, &eval_ctx);
 					float color[3];
+					const WorkSpace *workspace = CTX_wm_workspace(C);
 					Scene *scene = CTX_data_scene(C);
 					ViewLayer *view_layer = CTX_data_view_layer(C);
-					Paint *paint = BKE_paint_get_active(scene, view_layer, eval_ctx.object_mode);
+					Paint *paint = BKE_paint_get_active(scene, view_layer, workspace->object_mode);
 					Brush *brush = BKE_paint_brush(paint);
 
 					if (brush->flag & BRUSH_USE_GRADIENT) {
@@ -6154,9 +6154,6 @@ static int ui_do_but_CURVE(
 	int mx, my, a;
 	bool changed = false;
 
-	EvaluationContext eval_ctx;
-	CTX_data_eval_ctx(C, &eval_ctx);
-
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 
@@ -6273,6 +6270,7 @@ static int ui_do_but_CURVE(
 		}
 		else if (event->type == LEFTMOUSE && event->val != KM_PRESS) {
 			if (data->dragsel != -1) {
+				const WorkSpace *workspace = CTX_wm_workspace(C);
 				CurveMapping *cumap = (CurveMapping *)but->poin;
 				CurveMap *cuma = cumap->cm + cumap->cur;
 				CurveMapPoint *cmp = cuma->curve;
@@ -6287,7 +6285,7 @@ static int ui_do_but_CURVE(
 				}
 				else {
 					curvemapping_changed(cumap, true);  /* remove doubles */
-					BKE_paint_invalidate_cursor_overlay(&eval_ctx, scene, view_layer, cumap);
+					BKE_paint_invalidate_cursor_overlay(scene, view_layer, cumap, workspace->object_mode);
 				}
 			}
 
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c
index 66366e9f200..92f9dd9ee26 100644
--- a/source/blender/editors/render/render_update.c
+++ b/source/blender/editors/render/render_update.c
@@ -387,7 +387,7 @@ static int material_uses_texture(Material *ma, Tex *tex)
 	return false;
 }
 
-static void texture_changed(const EvaluationContext *eval_ctx, Main *bmain, Tex *tex)
+static void texture_changed(Main *bmain, Tex *tex)
 {
 	Material *ma;
 	Lamp *la;
@@ -401,10 +401,12 @@ static void texture_changed(const EvaluationContext *eval_ctx, Main *bmain, Tex
 	/* icons */
 	BKE_icon_changed(BKE_icon_id_ensure(&tex->id));
 
+	const eObjectMode object_mode = WM_windows_object_mode_get(bmain->wm.first);
+
 	/* paint overlays */
 	for (scene = bmain->scene.first; scene; scene = scene->id.next) {
 		for (view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
-			BKE_paint_invalidate_overlay_tex(eval_ctx, scene, view_layer, tex);
+			BKE_paint_invalidate_overlay_tex(scene, view_layer, tex, object_mode);
 		}
 	}
 
@@ -506,7 +508,7 @@ static void world_changed(Main *UNUSED(bmain), World *wo)
 	}
 }
 
-static void image_changed(const EvaluationContext *eval_ctx, Main *bmain, Image *ima)
+static void image_changed(Main *bmain, Image *ima)
 {
 	Tex *tex;
 
@@ -516,7 +518,7 @@ static void image_changed(const EvaluationContext *eval_ctx, Main *bmain, Image
 	/* textures */
 	for (tex = bmain->tex.first; tex; tex = tex->id.next)
 		if (tex->ima == ima)
-			texture_changed(eval_ctx, bmain, tex);
+			texture_changed(bmain, tex);
 }
 
 static void scene_changed(Main *bmain, Scene *scene)
@@ -552,7 +554,6 @@ void ED_render_id_flush_update(const DEGEditorUpdateContext *update_ctx, ID *id)
 		return;
 	}
 	Main *bmain = update_ctx->bmain;
-	const EvaluationContext *eval_ctx = bmain->eval_ctx;  /* OBMODE/TODO (all visible workspace modes) */
 	/* Internal ID update handlers. */
 	switch (GS(id->name)) {
 		case ID_MA:
@@ -560,7 +561,7 @@ void ED_render_id_flush_update(const DEGEditorUpdateContext *update_ctx, ID *id)
 			render_engine_flag_changed(bmain, RE_ENGINE_UPDATE_MA);
 			break;
 		case ID_TE:
-			texture_changed(eval_ctx, bmain, (Tex *)id);
+			texture_changed(bmain, (Tex *)id);
 			break;
 		case ID_WO:
 			world_changed(bmain, (World *)id);
@@ -570,7 +571,7 @@ void ED_render_id_flush_update(const DEGEditorUpdateContext *update_ctx, ID *id)
 			break;
 		case ID_IM:
 		{
-			image_changed(eval_ctx, bmain, (Image *)id);
+			image_changed(bmain, (Image *)id);
 			break;
 		}
 		case ID_SCE:
diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c
index 480733be994..8535bc863cf 100644
--- a/source/blender/editors/sculpt_paint/paint_utils.c
+++ b/source/blender/editors/sculpt_paint/paint_utils.c
@@ -565,13 +565,11 @@ static int brush_curve_preset_exec(bContext *C, wmOperator *op)
 {
 	Brush *br = BKE_paint_brush(BKE_paint_get_active_from_context(C));
 
-	if (br) {
-		EvaluationContext eval_ctx;
-		CTX_data_eval_ctx(C, &eval_ctx);
+	if (br) {const WorkSpace *workspace = CTX_wm_workspace(C);
 		Scene *scene = CTX_data_scene(C);
 		ViewLayer *view_layer = CTX_data_view_layer(C);
 		BKE_brush_curve_preset(br, RNA_enum_get(op->ptr, "shape"));
-		BKE_paint_invalidate_cursor_overlay(&eval_ctx, scene, view_layer, br->curve);
+		BKE_paint_invalidate_cursor_overlay(scene, view_layer, br->curve, workspace->object_mode);
 	}
 
 	return OPERATOR_FINISHED;
diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c
index 1dbf25c7007..aa37c9ffa88 100644
--- a/source/blender/makesrna/intern/rna_brush.c
+++ b/source/blender/makesrna/intern/rna_brush.c
@@ -31,6 +31,7 @@
 #include "DNA_texture_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_object_types.h"
+#include "DNA_workspace_types.h"
 
 #include "BLI_math.h"
 
@@ -375,25 +376,23 @@ static void rna_Brush_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerR
 
 static void rna_Brush_main_tex_update(bContext *C, PointerRNA *ptr)
 {
-	EvaluationContext eval_ctx;
-	CTX_data_eval_ctx(C, &eval_ctx);
+	const WorkSpace *workspace = CTX_wm_workspace(C);
 	Main *bmain = CTX_data_main(C);
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Brush *br = (Brush *)ptr->data;
-	BKE_paint_invalidate_overlay_tex(&eval_ctx, scene, view_layer, br->mtex.tex);
+	BKE_paint_invalidate_overlay_tex(scene, view_layer, br->mtex.tex, workspace->object_mode);
 	rna_Brush_update(bmain, scene, ptr);
 }
 
 static void rna_Brush_secondary_tex_update(bContext *C, PointerRNA *ptr)
 {
-	EvaluationContext eval_ctx;
-	CTX_data_eval_ctx(C, &eval_ctx);
 	Main *bmain = CTX_data_main(C);
+	const WorkSpace *workspace = CTX_wm_workspace(C);
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Brush *br = (Brush *)ptr->data;
-	BKE_paint_invalidate_overlay_tex(&eval_ctx, scene, view_layer, br->mask_mtex.tex);
+	BKE_paint_invalidate_overlay_tex(scene, view_layer, br->mask_mtex.tex, workspace->object_mode);
 	rna_Brush_update(bmain, scene, ptr);
 }
 
@@ -455,10 +454,9 @@ static void rna_TextureSlot_brush_angle_update(bContext *C, PointerRNA *ptr)
 	MTex *mtex = ptr->data;
 	/* skip invalidation of overlay for stencil mode */
 	if (mtex->mapping != MTEX_MAP_MODE_STENCIL) {
-		EvaluationContext eval_ctx;
-		CTX_data_eval_ctx(C, &eval_ctx);
+		const WorkSpace *workspace = CTX_wm_workspace(C);
 		ViewLayer *view_layer = CTX_data_view_layer(C);
-		BKE_paint_invalidate_overlay_tex(&eval_ctx, scene, view_layer, mtex->tex);
+		BKE_paint_invalidate_overlay_tex(scene, view_layer, mtex->tex, workspace->o

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list