[Bf-blender-cvs] [8dc18b54adc] blender2.8: Workbench: Fix ghosting and crash in X-Ray mode
Jeroen Bakker
noreply at git.blender.org
Tue Jul 3 09:55:53 CEST 2018
Commit: 8dc18b54adcba4ba78821f3f50f4755b052c2350
Author: Jeroen Bakker
Date: Tue Jul 3 09:13:34 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB8dc18b54adcba4ba78821f3f50f4755b052c2350
Workbench: Fix ghosting and crash in X-Ray mode
When playing animations the anti-aliasing was not reset, resulting in
ghosts from previous frames to be drawn. Also when playing animations
and switching to X-Ray mode for the first time would most likely
result in a write to uninitialized memory.
===================================================================
M source/blender/draw/engines/workbench/transparent_mode.c
M source/blender/draw/engines/workbench/workbench_effect_taa.c
===================================================================
diff --git a/source/blender/draw/engines/workbench/transparent_mode.c b/source/blender/draw/engines/workbench/transparent_mode.c
index 3c4f7796c2b..195b8371165 100644
--- a/source/blender/draw/engines/workbench/transparent_mode.c
+++ b/source/blender/draw/engines/workbench/transparent_mode.c
@@ -76,6 +76,12 @@ static void workbench_transparent_engine_free(void)
workbench_forward_engine_free();
}
+static void workbench_transparent_view_update(void *vedata)
+{
+ WORKBENCH_Data *data = vedata;
+ workbench_taa_view_updated(data);
+}
+
static const DrawEngineDataSize workbench_data_size = DRW_VIEWPORT_DATA_SIZE(WORKBENCH_Data);
DrawEngineType draw_engine_workbench_transparent = {
@@ -89,7 +95,7 @@ DrawEngineType draw_engine_workbench_transparent = {
&workbench_transparent_cache_finish,
&workbench_transparent_draw_background,
&workbench_transparent_draw_scene,
- NULL,
+ &workbench_transparent_view_update,
NULL,
NULL,
};
diff --git a/source/blender/draw/engines/workbench/workbench_effect_taa.c b/source/blender/draw/engines/workbench/workbench_effect_taa.c
index 0b4cc0a4e5b..33dce443935 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_taa.c
+++ b/source/blender/draw/engines/workbench/workbench_effect_taa.c
@@ -287,6 +287,13 @@ void workbench_taa_draw_scene_end(WORKBENCH_Data *vedata)
void workbench_taa_view_updated(WORKBENCH_Data *vedata)
{
- WORKBENCH_EffectInfo *effect_info = vedata->stl->effects;
- effect_info->view_updated = true;
+ WORKBENCH_StorageList *stl = vedata->stl;
+ if (stl)
+ {
+ WORKBENCH_EffectInfo *effect_info = stl->effects;
+ if (effect_info)
+ {
+ effect_info->view_updated = true;
+ }
+ }
}
More information about the Bf-blender-cvs
mailing list