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;
+    }
+  }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to