[Bf-blender-cvs] [a0eb54142f2] master: Undo: replace global access w/ ED_undo_stack_get

Campbell Barton noreply at git.blender.org
Tue Apr 3 08:39:10 CEST 2018


Commit: a0eb54142f244641041b0cb317cd09171105ad72
Author: Campbell Barton
Date:   Tue Apr 3 08:35:42 2018 +0200
Branches: master
https://developer.blender.org/rBa0eb54142f244641041b0cb317cd09171105ad72

Undo: replace global access w/ ED_undo_stack_get

While I'd like to avoid using this too much since the operator
system should handle.
It's less trouble than accessing it inline each time.

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

M	source/blender/editors/include/ED_undo.h
M	source/blender/editors/physics/particle_edit_undo.c
M	source/blender/editors/sculpt_paint/paint_curve_undo.c
M	source/blender/editors/sculpt_paint/paint_image_undo.c
M	source/blender/editors/sculpt_paint/sculpt_undo.c
M	source/blender/editors/undo/ed_undo.c

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

diff --git a/source/blender/editors/include/ED_undo.h b/source/blender/editors/include/ED_undo.h
index 044d69cfced..b3814ab5899 100644
--- a/source/blender/editors/include/ED_undo.h
+++ b/source/blender/editors/include/ED_undo.h
@@ -51,6 +51,8 @@ void    ED_undo_operator_repeat_cb_evt(struct bContext *C, void *arg_op, int arg
 
 bool    ED_undo_is_valid(const struct bContext *C, const char *undoname);
 
+struct UndoStack *ED_undo_stack_get(void);
+
 /* undo_system_types.c */
 void ED_undosys_type_init(void);
 void ED_undosys_type_free(void);
diff --git a/source/blender/editors/physics/particle_edit_undo.c b/source/blender/editors/physics/particle_edit_undo.c
index 329658a56e1..6e212174f39 100644
--- a/source/blender/editors/physics/particle_edit_undo.c
+++ b/source/blender/editors/physics/particle_edit_undo.c
@@ -45,16 +45,15 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_depsgraph.h"
-#include "BKE_global.h"
 #include "BKE_particle.h"
 #include "BKE_pointcache.h"
 #include "BKE_context.h"
-#include "BKE_main.h"
 #include "BKE_undo_system.h"
 
 #include "ED_object.h"
 #include "ED_particle.h"
 #include "ED_physics.h"
+#include "ED_undo.h"
 
 #include "particle_edit_utildefines.h"
 
@@ -304,10 +303,10 @@ void ED_particle_undosys_type(UndoType *ut)
 
 void PE_undo_push(struct Scene *scene, const char *str)
 {
-	wmWindowManager *wm = G.main->wm.first;
+	UndoStack *ustack = ED_undo_stack_get();
 	bContext *C_temp = CTX_create();
 	CTX_data_scene_set(C_temp, scene);
-	BKE_undosys_step_push_with_type(wm->undo_stack, C_temp, str, BKE_UNDOSYS_TYPE_PARTICLE);
+	BKE_undosys_step_push_with_type(ustack, C_temp, str, BKE_UNDOSYS_TYPE_PARTICLE);
 	CTX_free(C_temp);
 }
 
diff --git a/source/blender/editors/sculpt_paint/paint_curve_undo.c b/source/blender/editors/sculpt_paint/paint_curve_undo.c
index d5b7496fa3e..77f06180df6 100644
--- a/source/blender/editors/sculpt_paint/paint_curve_undo.c
+++ b/source/blender/editors/sculpt_paint/paint_curve_undo.c
@@ -34,11 +34,10 @@
 
 #include "BKE_context.h"
 #include "BKE_paint.h"
-#include "BKE_global.h"
-#include "BKE_main.h"
 #include "BKE_undo_system.h"
 
 #include "ED_paint.h"
+#include "ED_undo.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -155,15 +154,15 @@ void ED_paintcurve_undosys_type(UndoType *ut)
 
 void ED_paintcurve_undo_push_begin(const char *name)
 {
+	UndoStack *ustack = ED_undo_stack_get();
 	bContext *C = NULL; /* special case, we never read from this. */
-	wmWindowManager *wm = G.main->wm.first;
-	BKE_undosys_step_push_init_with_type(wm->undo_stack, C, name, BKE_UNDOSYS_TYPE_PAINTCURVE);
+	BKE_undosys_step_push_init_with_type(ustack, C, name, BKE_UNDOSYS_TYPE_PAINTCURVE);
 }
 
 void ED_paintcurve_undo_push_end(void)
 {
-	wmWindowManager *wm = G.main->wm.first;  /* XXX, avoids adding extra arg. */
-	BKE_undosys_step_push(wm->undo_stack, NULL, NULL);
+	UndoStack *ustack = ED_undo_stack_get();
+	BKE_undosys_step_push(ustack, NULL, NULL);
 }
 
 /** \} */
diff --git a/source/blender/editors/sculpt_paint/paint_image_undo.c b/source/blender/editors/sculpt_paint/paint_image_undo.c
index 9d1987943a5..554ddf92150 100644
--- a/source/blender/editors/sculpt_paint/paint_image_undo.c
+++ b/source/blender/editors/sculpt_paint/paint_image_undo.c
@@ -41,10 +41,10 @@
 #include "BKE_depsgraph.h"
 #include "BKE_image.h"
 #include "BKE_main.h"
-#include "BKE_global.h"
 #include "BKE_undo_system.h"
 
 #include "ED_paint.h"
+#include "ED_undo.h"
 
 #include "GPU_draw.h"
 
@@ -358,15 +358,15 @@ static void image_undo_free_list(ListBase *lb)
 
 void ED_image_undo_push_begin(const char *name)
 {
+	UndoStack *ustack = ED_undo_stack_get();
 	bContext *C = NULL; /* special case, we never read from this. */
-	wmWindowManager *wm = G.main->wm.first;
-	BKE_undosys_step_push_init_with_type(wm->undo_stack, C, name, BKE_UNDOSYS_TYPE_IMAGE);
+	BKE_undosys_step_push_init_with_type(ustack, C, name, BKE_UNDOSYS_TYPE_IMAGE);
 }
 
 void ED_image_undo_push_end(void)
 {
-	wmWindowManager *wm = G.main->wm.first;  /* XXX, avoids adding extra arg. */
-	BKE_undosys_step_push(wm->undo_stack, NULL, NULL);
+	UndoStack *ustack = ED_undo_stack_get();
+	BKE_undosys_step_push(ustack, NULL, NULL);
 }
 
 static void image_undo_invalidate(void)
@@ -486,8 +486,8 @@ ListBase *ED_image_undosys_step_get_tiles(UndoStep *us_p)
 
 ListBase *ED_image_undo_get_tiles(void)
 {
-	wmWindowManager *wm = G.main->wm.first;  /* XXX, avoids adding extra arg. */
-	UndoStep *us = BKE_undosys_stack_init_or_active_with_type(wm->undo_stack, BKE_UNDOSYS_TYPE_IMAGE);
+	UndoStack *ustack = ED_undo_stack_get();
+	UndoStep *us = BKE_undosys_stack_init_or_active_with_type(ustack, BKE_UNDOSYS_TYPE_IMAGE);
 	return ED_image_undosys_step_get_tiles(us);
 }
 
diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c
index 4e2bcab9f36..e90d2b58c0c 100644
--- a/source/blender/editors/sculpt_paint/sculpt_undo.c
+++ b/source/blender/editors/sculpt_paint/sculpt_undo.c
@@ -59,8 +59,6 @@
 #include "BKE_key.h"
 #include "BKE_mesh.h"
 #include "BKE_subsurf.h"
-#include "BKE_global.h"
-#include "BKE_main.h"
 #include "BKE_undo_system.h"
 
 #include "WM_api.h"
@@ -71,6 +69,7 @@
 #include "ED_paint.h"
 #include "ED_object.h"
 #include "ED_sculpt.h"
+#include "ED_undo.h"
 
 #include "bmesh.h"
 #include "paint_intern.h"
@@ -974,9 +973,9 @@ SculptUndoNode *sculpt_undo_push_node(
 
 void sculpt_undo_push_begin(const char *name)
 {
+	UndoStack *ustack = ED_undo_stack_get();
 	bContext *C = NULL; /* special case, we never read from this. */
-	wmWindowManager *wm = G.main->wm.first;
-	BKE_undosys_step_push_init_with_type(wm->undo_stack, C, name, BKE_UNDOSYS_TYPE_SCULPT);
+	BKE_undosys_step_push_init_with_type(ustack, C, name, BKE_UNDOSYS_TYPE_SCULPT);
 }
 
 void sculpt_undo_push_end(void)
@@ -995,8 +994,8 @@ void sculpt_undo_push_end(void)
 			BKE_pbvh_node_layer_disp_free(unode->node);
 	}
 
-	wmWindowManager *wm = G.main->wm.first;  /* XXX, avoids adding extra arg. */
-	BKE_undosys_step_push(wm->undo_stack, NULL, NULL);
+	UndoStack *ustack = ED_undo_stack_get();
+	BKE_undosys_step_push(ustack, NULL, NULL);
 }
 
 /* -------------------------------------------------------------------- */
@@ -1083,8 +1082,8 @@ static UndoSculpt *sculpt_undosys_step_get_nodes(UndoStep *us_p)
 
 static UndoSculpt *sculpt_undo_get_nodes(void)
 {
-	wmWindowManager *wm = G.main->wm.first;  /* XXX, avoids adding extra arg. */
-	UndoStep *us = BKE_undosys_stack_init_or_active_with_type(wm->undo_stack, BKE_UNDOSYS_TYPE_SCULPT);
+	UndoStack *ustack = ED_undo_stack_get();
+	UndoStep *us = BKE_undosys_stack_init_or_active_with_type(ustack, BKE_UNDOSYS_TYPE_SCULPT);
 	return sculpt_undosys_step_get_nodes(us);
 }
 
diff --git a/source/blender/editors/undo/ed_undo.c b/source/blender/editors/undo/ed_undo.c
index 691ba066bf9..4f62e38dc0b 100644
--- a/source/blender/editors/undo/ed_undo.c
+++ b/source/blender/editors/undo/ed_undo.c
@@ -42,6 +42,7 @@
 #include "BKE_blender_undo.h"
 #include "BKE_context.h"
 #include "BKE_global.h"
+#include "BKE_main.h"
 #include "BKE_screen.h"
 #include "BKE_undo_system.h"
 
@@ -190,6 +191,19 @@ bool ED_undo_is_valid(const bContext *C, const char *undoname)
 	return BKE_undosys_stack_has_undo(wm->undo_stack, undoname);
 }
 
+/**
+ * Ideally we wont access the stack directly,
+ * this is needed for modes which handle undo themselves (bypassing #ED_undo_push).
+ *
+ * Using global isn't great, this just avoids doing inline,
+ * causing 'BKE_global.h' & 'BKE_main.h' includes.
+ */
+UndoStack *ED_undo_stack_get(void)
+{
+	wmWindowManager *wm = G.main->wm.first;
+	return wm->undo_stack;
+}
+
 /** \} */
 
 /* -------------------------------------------------------------------- */



More information about the Bf-blender-cvs mailing list