diff options
author | Luca Rood <dev@lucarood.com> | 2017-07-10 12:36:16 +0300 |
---|---|---|
committer | Luca Rood <dev@lucarood.com> | 2017-07-10 12:39:08 +0300 |
commit | d33cacf7e46deb12713e058fff4c1096f8113469 (patch) | |
tree | eff3e9ffd3975378ce53c7002ceaf7340b963ed5 /source/blender/draw/modes/object_mode.c | |
parent | 7d5e9285b559cc69cc722913ae4adf1e247943eb (diff) |
Fix image empties not drawing
A pointer to the uniform data for the empty drawing was being freed
before the actual draw call, which invalidates the uniform.
This makes the data only be freed after drawing.
Diffstat (limited to 'source/blender/draw/modes/object_mode.c')
-rw-r--r-- | source/blender/draw/modes/object_mode.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index 2d3b2551225..87cf017edb7 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -1795,18 +1795,11 @@ static void OBJECT_cache_populate(void *vedata, Object *ob) } } -static void OBJECT_cache_finish(void *vedata) -{ - OBJECT_StorageList *stl = ((OBJECT_Data *)vedata)->stl; - if (stl->g_data->image_plane_map) { - BLI_ghash_free(stl->g_data->image_plane_map, NULL, MEM_freeN); - } -} - static void OBJECT_draw_scene(void *vedata) { OBJECT_PassList *psl = ((OBJECT_Data *)vedata)->psl; + OBJECT_StorageList *stl = ((OBJECT_Data *)vedata)->stl; OBJECT_FramebufferList *fbl = ((OBJECT_Data *)vedata)->fbl; DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get(); float clearcol[4] = {0.0f, 0.0f, 0.0f, 0.0f}; @@ -1873,6 +1866,11 @@ static void OBJECT_draw_scene(void *vedata) /* Combine with scene buffer last */ DRW_draw_pass(psl->outlines_resolve); } + + /* This has to be freed only after drawing empties! */ + if (stl->g_data->image_plane_map) { + BLI_ghash_free(stl->g_data->image_plane_map, NULL, MEM_freeN); + } } void OBJECT_collection_settings_create(IDProperty *props) @@ -1894,7 +1892,7 @@ DrawEngineType draw_engine_object_type = { &OBJECT_engine_free, &OBJECT_cache_init, &OBJECT_cache_populate, - &OBJECT_cache_finish, + NULL, NULL, &OBJECT_draw_scene }; |