[Bf-blender-cvs] [96e607f017c] greasepencil-object: Cleanup: Eliminate BKE_gpencil_batch_cache_alldirty()

Joshua Leung noreply at git.blender.org
Sat Nov 4 05:47:56 CET 2017


Commit: 96e607f017c7647439225f14dfbbc774a4b1a4ad
Author: Joshua Leung
Date:   Mon Oct 30 14:24:18 2017 +1300
Branches: greasepencil-object
https://developer.blender.org/rB96e607f017c7647439225f14dfbbc774a4b1a4ad

Cleanup: Eliminate BKE_gpencil_batch_cache_alldirty()

This accessed the global G.main directly, which we're trying to remove

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

M	source/blender/blenkernel/BKE_gpencil.h
M	source/blender/blenkernel/intern/gpencil.c
M	source/blender/draw/engines/gpencil/gpencil_engine.c
M	source/blender/editors/transform/transform_generics.c

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

diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index ec95e20bb9f..5bdeb7598d6 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -73,7 +73,6 @@ void BKE_gpencil_free(struct bGPdata *gpd, bool free_all);
 
 void BKE_gpencil_batch_cache_dirty(struct bGPdata *gpd);
 void BKE_gpencil_batch_cache_free(struct bGPdata *gpd);
-void BKE_gpencil_batch_cache_alldirty(void);
 void BKE_gpencil_batch_cache_alldirty_main(struct Main *bmain);
 
 void BKE_gpencil_stroke_sync_selection(struct bGPDstroke *gps);
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 9d2a21a29b4..7b35295388c 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -83,20 +83,6 @@ void BKE_gpencil_batch_cache_free(bGPdata *gpd)
 	}
 }
 
-/* Change draw manager status in all gpd datablocks */
-/* TODO: Remove and deprecate completely */
-void BKE_gpencil_batch_cache_alldirty()
-{
-#if 0 /* XXX: disabled so we can see how much is broken without this */
-	bGPdata *gpd;
-	Main *bmain = G.main; /* XXX: supply as arg? */
-
-	for (gpd = bmain->gpencil.first; gpd; gpd = gpd->id.next) {
-		BKE_gpencil_batch_cache_dirty(gpd);
-	}
-#endif
-}
-
 /* Change draw manager status in all gpd datablocks */
 /* TODO: Remove completely? */
 void BKE_gpencil_batch_cache_alldirty_main(Main *bmain)
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 56ec2cf3073..56d5c6da7ff 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -255,17 +255,19 @@ static void GPENCIL_cache_init(void *vedata)
 		psl->edit_pass = DRW_pass_create("GPencil Edit Pass", DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND);
 		
 		/* detect if playing animation */
+		// XXX: Why? Can this be done in a simpler way (covering less of the main DB)?
 		int oldsts = stl->storage->playing;
 		stl->storage->playing = 0;
 		if (draw_ctx->evil_C) {
+			struct Main *bmain = CTX_data_main(draw_ctx->evil_C);
 			if (ED_screen_animation_playing(CTX_wm_manager(draw_ctx->evil_C))) {
 				stl->storage->playing = 1;
-				BKE_gpencil_batch_cache_alldirty();
+				BKE_gpencil_batch_cache_alldirty_main(bmain);
 			}
 			else {
 				/* if change animation status, cache is dirty */
 				if (oldsts != stl->storage->playing) {
-					BKE_gpencil_batch_cache_alldirty();
+					BKE_gpencil_batch_cache_alldirty_main(bmain);
 				}
 			}
 		}
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 4a55003d0d1..ee6e9925562 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -346,12 +346,9 @@ static void recalcData_actedit(TransInfo *t)
 	if (ELEM(ac.datatype, ANIMCONT_GPENCIL, ANIMCONT_MASK)) {
 		/* flush transform values back to actual coordinates */
 		flushTransIntFrameActionData(t);
-		/* refresh gpencil cache */
-		if (ac.datatype == ANIMCONT_GPENCIL) {
-			BKE_gpencil_batch_cache_alldirty();
-		}
 	}
-	else {
+	
+	if (ac.datatype != ANIMCONT_MASK) {
 		/* get animdata blocks visible in editor, assuming that these will be the ones where things changed */
 		filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_ANIMDATA);
 		ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype);



More information about the Bf-blender-cvs mailing list