Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Rood <dev@lucarood.com>2017-07-10 12:36:16 +0300
committerLuca Rood <dev@lucarood.com>2017-07-10 12:39:08 +0300
commitd33cacf7e46deb12713e058fff4c1096f8113469 (patch)
treeeff3e9ffd3975378ce53c7002ceaf7340b963ed5 /source/blender/draw/modes/object_mode.c
parent7d5e9285b559cc69cc722913ae4adf1e247943eb (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.c16
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
};