[Bf-blender-cvs] [a75c50941ac] temp-workspace_active_object: Get rid of first bunch of ViewLayer.basact accesses

Julian Eisel noreply at git.blender.org
Sat Dec 2 03:20:13 CET 2017


Commit: a75c50941acf9e5bbead14ee3d6eb33dd8f24ec4
Author: Julian Eisel
Date:   Sat Nov 25 04:34:46 2017 +0100
Branches: temp-workspace_active_object
https://developer.blender.org/rBa75c50941acf9e5bbead14ee3d6eb33dd8f24ec4

Get rid of first bunch of ViewLayer.basact accesses

Get the active base/object through workspace or context (which gets it
through workspace again) instead.

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

M	source/blender/blenkernel/BKE_workspace.h
M	source/blender/blenkernel/intern/paint.c
M	source/blender/blenkernel/intern/workspace.c
M	source/blender/editors/animation/anim_filter.c
M	source/blender/editors/curve/editfont.c
M	source/blender/editors/mesh/mesh_navmesh.c
M	source/blender/editors/object/object_add.c
M	source/blender/editors/object/object_edit.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/editors/physics/particle_object.c
M	source/blender/editors/screen/screen_context.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/editors/space_view3d/view3d_buttons.c
M	source/blender/editors/util/ed_util.c
M	source/blender/makesdna/DNA_workspace_types.h

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

diff --git a/source/blender/blenkernel/BKE_workspace.h b/source/blender/blenkernel/BKE_workspace.h
index f295af3150a..2a35f0d2cae 100644
--- a/source/blender/blenkernel/BKE_workspace.h
+++ b/source/blender/blenkernel/BKE_workspace.h
@@ -102,7 +102,8 @@ enum eObjectMode BKE_workspace_object_mode_get(const struct WorkSpace *workspace
 #ifdef USE_WORKSPACE_MODE
 void            BKE_workspace_object_mode_set(struct WorkSpace *workspace, const enum eObjectMode mode) SETTER_ATTRS;
 #endif
-struct Base *BKE_workspace_active_base_get(const struct WorkSpace *workspace);
+struct Base *BKE_workspace_active_base_get(const struct WorkSpace *workspace) GETTER_ATTRS;
+struct Object *BKE_workspace_active_object_get(const struct WorkSpace *workspace);
 struct ListBase *BKE_workspace_transform_orientations_get(struct WorkSpace *workspace) GETTER_ATTRS;
 struct ViewLayer *BKE_workspace_view_layer_get(const struct WorkSpace *workspace) GETTER_ATTRS;
 void               BKE_workspace_view_layer_set(struct WorkSpace *workspace, struct ViewLayer *layer) SETTER_ATTRS;
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index c88642a8164..3eb63a2e6c2 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -189,15 +189,11 @@ Paint *BKE_paint_get_active(Scene *sce, ViewLayer *view_layer)
 Paint *BKE_paint_get_active_from_context(const bContext *C)
 {
 	Scene *sce = CTX_data_scene(C);
-	ViewLayer *view_layer = CTX_data_view_layer(C);
 	SpaceImage *sima;
 
-	if (sce && view_layer) {
+	if (sce) {
 		ToolSettings *ts = sce->toolsettings;
-		Object *obact = NULL;
-
-		if (view_layer->basact && view_layer->basact->object)
-			obact = view_layer->basact->object;
+		Object *obact = CTX_data_active_object(C);
 
 		if ((sima = CTX_wm_space_image(C)) != NULL) {
 			if (obact && obact->mode == OB_MODE_EDIT) {
@@ -240,15 +236,11 @@ Paint *BKE_paint_get_active_from_context(const bContext *C)
 ePaintMode BKE_paintmode_get_active_from_context(const bContext *C)
 {
 	Scene *sce = CTX_data_scene(C);
-	ViewLayer *view_layer = CTX_data_view_layer(C);
 	SpaceImage *sima;
 
-	if (sce && view_layer) {
+	if (sce) {
 		ToolSettings *ts = sce->toolsettings;
-		Object *obact = NULL;
-
-		if (view_layer->basact && view_layer->basact->object)
-			obact = view_layer->basact->object;
+		Object *obact = CTX_data_active_object(C);
 
 		if ((sima = CTX_wm_space_image(C)) != NULL) {
 			if (obact && obact->mode == OB_MODE_EDIT) {
diff --git a/source/blender/blenkernel/intern/workspace.c b/source/blender/blenkernel/intern/workspace.c
index 785fd71df69..6a95d2a6b4d 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -405,6 +405,12 @@ Base *BKE_workspace_active_base_get(const WorkSpace *workspace)
 	return workspace->view_layer->basact;
 }
 
+Object *BKE_workspace_active_object_get(const WorkSpace *workspace)
+{
+	Base *active_base = BKE_workspace_active_base_get(workspace);
+	return active_base ? active_base->object : NULL;
+}
+
 ListBase *BKE_workspace_transform_orientations_get(WorkSpace *workspace)
 {
 	return &workspace->transform_orientations;
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index bc901d7e13f..bee1c52a90f 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -382,7 +382,7 @@ bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
 		ac->markers = ED_context_get_markers(C);
 	}
 	ac->view_layer = CTX_data_view_layer(C);
-	ac->obact = (ac->view_layer->basact) ? ac->view_layer->basact->object : NULL;
+	ac->obact = CTX_data_active_object(C);
 	ac->sa = sa;
 	ac->ar = ar;
 	ac->sl = sl;
diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c
index cbb5abf1309..2e29ad29da8 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -437,7 +437,7 @@ static void txt_add_object(bContext *C, TextLine *firstline, int totline, const
 	CTX_data_eval_ctx(C, &eval_ctx);
 
 	obedit = BKE_object_add(bmain, scene, view_layer, OB_FONT, NULL);
-	base = view_layer->basact;
+	base = CTX_data_active_base(C);
 
 	/* seems to assume view align ? TODO - look into this, could be an operator option */
 	ED_object_base_init_transform(C, base, NULL, rot);
diff --git a/source/blender/editors/mesh/mesh_navmesh.c b/source/blender/editors/mesh/mesh_navmesh.c
index d7e59a05772..449ba083193 100644
--- a/source/blender/editors/mesh/mesh_navmesh.c
+++ b/source/blender/editors/mesh/mesh_navmesh.c
@@ -466,7 +466,7 @@ static Object *createRepresentation(bContext *C, struct recast_polyMesh *pmesh,
 static int navmesh_create_exec(bContext *C, wmOperator *op)
 {
 	Scene *scene = CTX_data_scene(C);
-	ViewLayer *view_layer = CTX_data_view_layer(C);
+	Base *active_base = CTX_data_active_base(C);
 	LinkNode *obs = NULL;
 	Base *navmeshBase = NULL;
 
@@ -474,7 +474,7 @@ static int navmesh_create_exec(bContext *C, wmOperator *op)
 	{
 		if (base->object->type == OB_MESH) {
 			if (base->object->body_type == OB_BODY_TYPE_NAVMESH) {
-				if (!navmeshBase || base == view_layer->basact) {
+				if (!navmeshBase || base == active_base) {
 					navmeshBase = base;
 				}
 			}
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index 77b30951dee..88d67d27f04 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -429,6 +429,7 @@ Object *ED_object_add_type(
 	Main *bmain = CTX_data_main(C);
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
+	Base *base;
 	Object *ob;
 
 	/* for as long scene has editmode... */
@@ -437,11 +438,12 @@ Object *ED_object_add_type(
 
 	/* deselects all, sets scene->basact */
 	ob = BKE_object_add(bmain, scene, view_layer, type, name);
+	base = CTX_data_active_base(C);
 	/* editor level activate, notifiers */
-	ED_object_base_activate(C, view_layer->basact);
+	ED_object_base_activate(C, base);
 
 	/* more editor stuff */
-	ED_object_base_init_transform(C, view_layer->basact, loc, rot);
+	ED_object_base_init_transform(C, base, loc, rot);
 
 	/* Ignore collisions by default for non-mesh objects */
 	if (type != OB_MESH) {
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 804d0ed1f0d..2dbaa29e9e7 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -242,9 +242,10 @@ void ED_object_editmode_exit(bContext *C, int flag)
 	if (flag & EM_WAITCURSOR) waitcursor(1);
 
 	if (ED_object_editmode_load_ex(CTX_data_main(C), obedit, freedata) == false) {
+		const Object *ob_active = CTX_data_active_object(C);
 		/* in rare cases (background mode) its possible active object
 		 * is flagged for editmode, without 'obedit' being set [#35489] */
-		if (UNLIKELY(view_layer->basact && (view_layer->basact->object->mode & OB_MODE_EDIT))) {
+		if (UNLIKELY(ob_active && ob_active->mode & OB_MODE_EDIT)) {
 			view_layer->basact->object->mode &= ~OB_MODE_EDIT;
 		}
 		if (flag & EM_WAITCURSOR) waitcursor(0);
@@ -290,7 +291,6 @@ void ED_object_editmode_exit(bContext *C, int flag)
 void ED_object_editmode_enter(bContext *C, int flag)
 {
 	Scene *scene = CTX_data_scene(C);
-	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Object *ob;
 	bool ok = false;
 
@@ -302,7 +302,7 @@ void ED_object_editmode_enter(bContext *C, int flag)
 		if (ob == NULL) return;
 	}
 	else {
-		ob = view_layer->basact->object;
+		ob = CTX_data_active_object(C);
 	}
 
 	if (ELEM(NULL, ob, ob->data)) return;
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index ca58a60806c..ae260563538 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -882,7 +882,6 @@ ModifierData *edit_modifier_property_get(wmOperator *op, Object *ob, int type)
 static int modifier_remove_exec(bContext *C, wmOperator *op)
 {
 	Main *bmain = CTX_data_main(C);
-	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Object *ob = ED_object_active_context(C);
 	ModifierData *md = edit_modifier_property_get(op, ob, 0);
 	int mode_orig = ob->mode;
@@ -893,11 +892,15 @@ static int modifier_remove_exec(bContext *C, wmOperator *op)
 	WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob);
 
 	/* if cloth/softbody was removed, particle mode could be cleared */
-	if (mode_orig & OB_MODE_PARTICLE_EDIT)
-		if ((ob->mode & OB_MODE_PARTICLE_EDIT) == 0)
-			if (view_layer->basact && view_layer->basact->object == ob)
+	if (mode_orig & OB_MODE_PARTICLE_EDIT) {
+		if ((ob->mode & OB_MODE_PARTICLE_EDIT) == 0) {
+			Object *ob_active = CTX_data_active_object(C);
+			if (ob_active == ob) {
 				WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, NULL);
-	
+			}
+		}
+	}
+
 	return OPERATOR_FINISHED;
 }
 
diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c
index 4fee14dc71d..56a1f87a95c 100644
--- a/source/blender/editors/physics/particle_object.c
+++ b/source/blender/editors/physics/particle_object.c
@@ -135,7 +135,6 @@ static int particle_system_remove_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	Object *ob = ED_object_context(C);
 	Scene *scene = CTX_data_scene(C);
-	ViewLayer *view_layer = CTX_data_view_layer(C);
 	int mode_orig;
 
 	if (!scene || !ob)
@@ -149,7 +148,8 @@ static int particle_system_remove_exec(bContext *C, wmOperator *UNUSED(op))
 	 */
 	if (mode_orig & OB_MODE_PARTICLE_EDIT) {
 		if ((ob->mode & OB_MODE_PARTICLE_EDIT) == 0) {
-			if (view_layer->basact && view_layer->basact->object == ob) {
+			Object *ob_active = CTX_data_active_object(C);
+			if (ob_active == ob) {
 				WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, NULL);
 			}
 		}
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index d84f256bc32..329ce1743e6 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -91,7

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list