[Bf-blender-cvs] [577f93c3993] greasepencil-object: Replace CFRA with DEG_get_ctime()

Antonio Vazquez noreply at git.blender.org
Fri May 18 18:36:26 CEST 2018


Commit: 577f93c39930e4d8efb291379bca897305ac44b3
Author: Antonio Vazquez
Date:   Fri May 18 16:40:39 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rB577f93c39930e4d8efb291379bca897305ac44b3

Replace CFRA with DEG_get_ctime()

The CFRA value is not updated using COW.

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

M	source/blender/editors/gpencil/gpencil_add_monkey.c
M	source/blender/editors/gpencil/gpencil_brush.c
M	source/blender/editors/gpencil/gpencil_convert.c
M	source/blender/editors/gpencil/gpencil_data.c
M	source/blender/editors/gpencil/gpencil_edit.c
M	source/blender/editors/gpencil/gpencil_fill.c
M	source/blender/editors/gpencil/gpencil_interpolate.c
M	source/blender/editors/gpencil/gpencil_paint.c
M	source/blender/editors/gpencil/gpencil_primitive.c
M	source/blender/editors/gpencil/gpencil_select.c

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

diff --git a/source/blender/editors/gpencil/gpencil_add_monkey.c b/source/blender/editors/gpencil/gpencil_add_monkey.c
index 4dfc8493ad6..254fcf54d2e 100644
--- a/source/blender/editors/gpencil/gpencil_add_monkey.c
+++ b/source/blender/editors/gpencil/gpencil_add_monkey.c
@@ -40,6 +40,9 @@
 #include "BKE_main.h"
 #include "BKE_material.h"
 
+#include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
+
 #include "ED_gpencil.h"
 
 /* Definition of the most important info from a color */
@@ -1424,6 +1427,8 @@ void ED_gpencil_create_monkey(bContext *C, float mat[4][4])
 	Scene *scene = CTX_data_scene(C);
 	Main *bmain = CTX_data_main(C);
 	Object *ob = CTX_data_active_object(C);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
 	bGPdata *gpd = (bGPdata *)ob->data;
 	bGPDstroke *gps;
 	
@@ -1442,8 +1447,8 @@ void ED_gpencil_create_monkey(bContext *C, float mat[4][4])
 
 	/* frames */
 	/* NOTE: No need to check for existing, as this will tkae care of it for us */
-	bGPDframe *frameColor = BKE_gpencil_frame_addnew(Colors, CFRA);
-	bGPDframe *frameLines = BKE_gpencil_frame_addnew(Lines, CFRA);
+	bGPDframe *frameColor = BKE_gpencil_frame_addnew(Colors, cfra_eval);
+	bGPDframe *frameLines = BKE_gpencil_frame_addnew(Lines, cfra_eval);
 
 	/* generate strokes */
 	gps = BKE_gpencil_add_stroke(frameColor, color_Skin, 538, 3);
diff --git a/source/blender/editors/gpencil/gpencil_brush.c b/source/blender/editors/gpencil/gpencil_brush.c
index a432c5d741d..e451fe6d560 100644
--- a/source/blender/editors/gpencil/gpencil_brush.c
+++ b/source/blender/editors/gpencil/gpencil_brush.c
@@ -82,6 +82,7 @@
 #include "GPU_immediate_util.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
 
 #include "gpencil_intern.h"
 
@@ -92,6 +93,7 @@
 typedef struct tGP_BrushEditData {
 	/* Current editor/region/etc. */
 	/* NOTE: This stuff is mainly needed to handle 3D view projection stuff... */
+	Depsgraph *depsgraph;
 	Scene *scene;
 	Object *object;
 
@@ -1011,7 +1013,10 @@ static void gp_brush_clone_add(bContext *C, tGP_BrushEditData *gso)
 	Scene *scene = gso->scene;
 	Object *ob = CTX_data_active_object(C);
 	bGPDlayer *gpl = CTX_data_active_gpencil_layer(C);
-	bGPDframe *gpf = BKE_gpencil_layer_getframe(gpl, CFRA, true);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
+
+	bGPDframe *gpf = BKE_gpencil_layer_getframe(gpl, cfra_eval, true);
 	bGPDstroke *gps;
 	
 	float delta[3];
@@ -1171,6 +1176,7 @@ static bool gpsculpt_brush_init(bContext *C, wmOperator *op)
 	gso = MEM_callocN(sizeof(tGP_BrushEditData), "tGP_BrushEditData");
 	op->customdata = gso;
 	
+	gso->depsgraph = CTX_data_depsgraph(C);
 	/* store state */
 	gso->settings = gpsculpt_get_settings(scene);
 	gso->brush = gpsculpt_get_brush(scene, is_weight_mode);
@@ -1333,11 +1339,12 @@ static void gpsculpt_brush_init_stroke(tGP_BrushEditData *gso)
 {
 	Scene *scene = gso->scene;
 	bGPdata *gpd = gso->gpd;
+	
 	bGPDlayer *gpl;
-	int cfra = CFRA;
+	int cfra_eval = (int)DEG_get_ctime(gso->depsgraph);
 	
 	/* only try to add a new frame if this is the first stroke, or the frame has changed */
-	if ((gpd == NULL) || (cfra == gso->cfra))
+	if ((gpd == NULL) || (cfra_eval == gso->cfra))
 		return;
 	
 	/* go through each layer, and ensure that we've got a valid frame to use */
@@ -1351,14 +1358,14 @@ static void gpsculpt_brush_init_stroke(tGP_BrushEditData *gso)
 			 *   spent too much time editing the wrong frame...
 			 */
 			// XXX: should this be allowed when framelock is enabled?
-			if (gpf->framenum != cfra) {
-				BKE_gpencil_frame_addcopy(gpl, cfra);
+			if (gpf->framenum != cfra_eval) {
+				BKE_gpencil_frame_addcopy(gpl, cfra_eval);
 			}
 		}
 	}
 	
 	/* save off new current frame, so that next update works fine */
-	gso->cfra = cfra;
+	gso->cfra = cfra_eval;
 }
 
 /* Apply ----------------------------------------------- */
diff --git a/source/blender/editors/gpencil/gpencil_convert.c b/source/blender/editors/gpencil/gpencil_convert.c
index ac0866debda..35e7f240032 100644
--- a/source/blender/editors/gpencil/gpencil_convert.c
+++ b/source/blender/editors/gpencil/gpencil_convert.c
@@ -71,6 +71,7 @@
 #include "BKE_tracking.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
 
 #include "UI_interface.h"
 
@@ -1124,7 +1125,10 @@ static void gp_layer_to_curve(bContext *C, ReportList *reports, bGPdata *gpd, bG
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	SceneCollection *sc = CTX_data_scene_collection(C);
-	bGPDframe *gpf = BKE_gpencil_layer_getframe(gpl, CFRA, 0);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
+
+	bGPDframe *gpf = BKE_gpencil_layer_getframe(gpl, cfra_eval, 0);
 	bGPDstroke *gps, *prev_gps = NULL;
 	Object *ob;
 	Curve *cu;
@@ -1230,6 +1234,9 @@ static void gp_layer_to_curve(bContext *C, ReportList *reports, bGPdata *gpd, bG
 static bool gp_convert_check_has_valid_timing(bContext *C, bGPDlayer *gpl, wmOperator *op)
 {
 	Scene *scene = CTX_data_scene(C);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
+
 	bGPDframe *gpf = NULL;
 	bGPDstroke *gps = NULL;
 	bGPDspoint *pt;
@@ -1237,7 +1244,7 @@ static bool gp_convert_check_has_valid_timing(bContext *C, bGPDlayer *gpl, wmOpe
 	int i;
 	bool valid = true;
 	
-	if (!gpl || !(gpf = BKE_gpencil_layer_getframe(gpl, CFRA, 0)) || !(gps = gpf->strokes.first))
+	if (!gpl || !(gpf = BKE_gpencil_layer_getframe(gpl, cfra_eval, 0)) || !(gps = gpf->strokes.first))
 		return false;
 	
 	do {
@@ -1285,6 +1292,9 @@ static void gp_convert_set_end_frame(struct Main *UNUSED(main), struct Scene *UN
 static int gp_convert_poll(bContext *C)
 {
 	bGPdata *gpd = ED_gpencil_data_get_active(C);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
+
 	bGPDlayer *gpl = NULL;
 	bGPDframe *gpf = NULL;
 	ScrArea *sa = CTX_wm_area(C);
@@ -1296,7 +1306,7 @@ static int gp_convert_poll(bContext *C)
 	 */
 	return ((sa && sa->spacetype == SPACE_VIEW3D) &&
 	        (gpl = BKE_gpencil_layer_getactive(gpd)) &&
-	        (gpf = BKE_gpencil_layer_getframe(gpl, CFRA, 0)) &&
+	        (gpf = BKE_gpencil_layer_getframe(gpl, cfra_eval, 0)) &&
 	        (gpf->strokes.first) &&
 	        (OBEDIT_FROM_VIEW_LAYER(view_layer) == NULL));
 }
diff --git a/source/blender/editors/gpencil/gpencil_data.c b/source/blender/editors/gpencil/gpencil_data.c
index ee5aa29dbb0..15bb9749a85 100644
--- a/source/blender/editors/gpencil/gpencil_data.c
+++ b/source/blender/editors/gpencil/gpencil_data.c
@@ -90,6 +90,7 @@
 
 #include "DEG_depsgraph.h"
 #include "DEG_depsgraph_build.h"
+#include "DEG_depsgraph_query.h"
 
 #include "gpencil_intern.h"
 
@@ -385,6 +386,8 @@ static int gp_frame_duplicate_exec(bContext *C, wmOperator *op)
 	Scene *scene = CTX_data_scene(C);
 	bGPdata *gpd = ED_gpencil_data_get_active(C);
 	bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
 
 	int mode = RNA_enum_get(op->ptr, "mode");
 	
@@ -393,12 +396,12 @@ static int gp_frame_duplicate_exec(bContext *C, wmOperator *op)
 		return OPERATOR_CANCELLED;
 
 	if (mode == 0) {
-		BKE_gpencil_frame_addcopy(gpl, CFRA);
+		BKE_gpencil_frame_addcopy(gpl, cfra_eval);
 	}
 	else {
 		for (gpl = gpd->layers.first; gpl; gpl = gpl->next) {
 			if ((gpl->flag & GP_LAYER_LOCKED) == 0) {
-				BKE_gpencil_frame_addcopy(gpl, CFRA);
+				BKE_gpencil_frame_addcopy(gpl, cfra_eval);
 			}
 		}
 
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index 18f0aad7801..197915751b2 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -88,6 +88,7 @@
 
 #include "DEG_depsgraph.h"
 #include "DEG_depsgraph_build.h"
+#include "DEG_depsgraph_query.h"
 
 #include "gpencil_intern.h"
 
@@ -898,6 +899,8 @@ static int gp_strokes_paste_exec(bContext *C, wmOperator *op)
 	Object *ob = CTX_data_active_object(C);
 	bGPdata *gpd = ED_gpencil_data_get_active(C);
 	bGPDlayer *gpl = CTX_data_active_gpencil_layer(C); /* only use active for copy merge */
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
 	bGPDframe *gpf;
 	
 	eGP_PasteMode type = RNA_enum_get(op->ptr, "type");
@@ -983,7 +986,7 @@ static int gp_strokes_paste_exec(bContext *C, wmOperator *op)
 			 *       we are obliged to add a new frame if one
 			 *       doesn't exist already
 			 */
-			gpf = BKE_gpencil_layer_getframe(gpl, CFRA, true);
+			gpf = BKE_gpencil_layer_getframe(gpl, cfra_eval, true);
 			if (gpf) {
 				/* Create new stroke */
 				bGPDstroke *new_stroke = MEM_dupallocN(gps);
@@ -1067,6 +1070,8 @@ static int gp_move_to_layer_invoke(bContext *C, wmOperator *op, const wmEvent *U
 static int gp_move_to_layer_exec(bContext *C, wmOperator *op)
 {
 	bGPdata *gpd = CTX_data_gpencil_data(C);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
 	bGPDlayer *target_layer = NULL;
 	ListBase strokes = {NULL, NULL};
 	int layer_num = RNA_enum_get(op->ptr, "layer");
@@ -1124,7 +1129,7 @@ static int gp_move_to_layer_exec(bContext *C, wmOperator *op)
 	/* Paste them all in one go */
 	if (strokes.first) {
 		Scene *scene = CTX_data_scene(C);
-		bGPDframe *gpf = BKE_gpencil_layer_getframe(target_layer, CFRA, true);
+		bGPDframe *gpf = BKE_gpencil_layer_getframe(target_layer, cfra_eval, true);
 		
 		BLI_movelisttolist(&gpf->strokes, &strokes);
 		BLI_assert((strokes.first == strokes.last) && (strokes.first == NULL));
@@ -1182,6 +1187,9 @@ static int gp_blank_frame_add_exec(bContext *C, wmOperator *op)
 {
 	Scene *scene = CTX_data_scene(C);
 	bGPdata *gpd = ED_gpencil_data_get_active(C);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
+	int cfra_eval = (int)DEG_get_ctime(depsgraph);
+
 	bGPDlayer *active_gpl = BKE_gpencil_layer_getactive(gpd);
 
 	const bool all_layers = RNA_boolean_get(op->ptr, "all_layers");
@@ -1202,7 +1210,7 @@ static int gp_blank_frame_add_exec(bContext *C, wmOperator *op)
 		}
 
 		/* 1) Check for an exi

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list