From 2c9e27f209a94867fa3d156564f5e8e6ade2278e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 30 Mar 2020 18:37:48 +0200 Subject: 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. --- source/blender/draw/intern/draw_cache_impl_gpencil.c | 11 +++++++---- 1 file 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; } -- cgit v1.2.3