diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-03-30 19:37:48 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-03-30 19:38:15 +0300 |
commit | 2c9e27f209a94867fa3d156564f5e8e6ade2278e (patch) | |
tree | d89f3bd103636d6669253a982403b76b15b9fd34 /source/blender/draw/intern/draw_cache_impl_gpencil.c | |
parent | 100896e080bc6f09177fbf4aa6ad4b587bd95ed5 (diff) |
Fix T75144 Grease Pencil: Python generated strokes flicker and crash
This was caused by a flag not being reset in time, causing discard of
batches already queued to be drawn.
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_gpencil.c')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_gpencil.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_gpencil.c b/source/blender/draw/intern/draw_cache_impl_gpencil.c index 4a474768226..8d6d8c593f0 100644 --- a/source/blender/draw/intern/draw_cache_impl_gpencil.c +++ b/source/blender/draw/intern/draw_cache_impl_gpencil.c @@ -71,6 +71,13 @@ typedef struct GpencilBatchCache { static bool gpencil_batch_cache_valid(GpencilBatchCache *cache, bGPdata *gpd, int cfra) { bool valid = true; + + /* Needs to be first to consume the flag. */ + if (gpd->flag & GP_DATA_PYTHON_UPDATED) { + gpd->flag &= ~GP_DATA_PYTHON_UPDATED; + valid = false; + } + if (cache == NULL) { return false; } @@ -82,10 +89,6 @@ static bool gpencil_batch_cache_valid(GpencilBatchCache *cache, bGPdata *gpd, in else if (gpd->flag & GP_DATA_CACHE_IS_DIRTY) { valid = false; } - else if (gpd->flag & GP_DATA_PYTHON_UPDATED) { - gpd->flag &= ~GP_DATA_PYTHON_UPDATED; - valid = false; - } else if (cache->is_dirty) { valid = false; } |