diff options
author | Antonioya <blendergit@gmail.com> | 2019-07-06 00:11:53 +0300 |
---|---|---|
committer | Antonioya <blendergit@gmail.com> | 2019-07-06 00:52:26 +0300 |
commit | a0f3ea7da3f65333fbac9c2d528c4242c417860d (patch) | |
tree | d6004f828aba6d51eb1ace911f8d8be7c0fdea96 /source/blender/draw/engines/gpencil/gpencil_engine.c | |
parent | a7a9c0e50dc9b96d84e1e7cf18d26b3ef5679aa5 (diff) |
Fix T62101: GPencil: selection order is wrong
Following the advices of @Germano Cavalcante (mano-wii) , I have exposed as a workaround the free function to be called from draw manager for selection.
Now, the free function is not called for selection inside gpencil draw_scene, but it's called from draw_manager.c.
The real fix would be create a new Scene_finish callback in draw manager, but as the release of 2.80 is almost here, we fix this with a workaround that must be removed when new callback is in place.
Differential Revision: http://developer.blender.org/D5193
Diffstat (limited to 'source/blender/draw/engines/gpencil/gpencil_engine.c')
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_engine.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c index e5dadba9bdc..5d7ec490fb6 100644 --- a/source/blender/draw/engines/gpencil/gpencil_engine.c +++ b/source/blender/draw/engines/gpencil/gpencil_engine.c @@ -771,8 +771,11 @@ static void gpencil_prepare_fast_drawing(GPENCIL_StorageList *stl, } } -static void gpencil_free_runtime_data(GPENCIL_StorageList *stl) +void DRW_gpencil_free_runtime_data(void *ved) { + GPENCIL_Data *vedata = (GPENCIL_Data *)ved; + GPENCIL_StorageList *stl = ((GPENCIL_Data *)vedata)->stl; + /* free gpu data */ DRW_TEXTURE_FREE_SAFE(stl->g_data->gpencil_blank_texture); @@ -976,8 +979,6 @@ void GPENCIL_draw_scene(void *ved) /* if the draw is for select, do a basic drawing and return */ if (DRW_state_is_select() || DRW_state_is_depth()) { drw_gpencil_select_render(stl, psl); - /* free memory */ - gpencil_free_runtime_data(stl); return; } @@ -1010,7 +1011,7 @@ void GPENCIL_draw_scene(void *ved) } /* free memory */ - gpencil_free_runtime_data(stl); + DRW_gpencil_free_runtime_data(ved); return; } @@ -1159,7 +1160,7 @@ void GPENCIL_draw_scene(void *ved) } } /* free memory */ - gpencil_free_runtime_data(stl); + DRW_gpencil_free_runtime_data(ved); /* reset */ if (DRW_state_is_fbo()) { |