[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