[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