From 4f59e4bddcb0c06e441adf68a5f252a4e5b4b260 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 6 Aug 2020 19:58:35 +0200 Subject: Fix T78452 EEVEE: Motion Blur: Crash when using camera switching This was caused by the ViewLayer being freed with all its engine data. --- source/blender/draw/intern/DRW_render.h | 4 ++++ source/blender/draw/intern/draw_manager.c | 8 ++++++++ 2 files changed, 12 insertions(+) (limited to 'source/blender/draw/intern') diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h index 7a889d9399e..16e6269aad6 100644 --- a/source/blender/draw/intern/DRW_render.h +++ b/source/blender/draw/intern/DRW_render.h @@ -632,6 +632,10 @@ void DRW_render_object_iter(void *vedata, struct RenderEngine *engine, struct Depsgraph *depsgraph)); void DRW_render_instance_buffer_finish(void); +void DRW_render_set_time(struct RenderEngine *engine, + struct Depsgraph *depsgraph, + int frame, + float subframe); void DRW_render_viewport_size_set(const int size[2]); void DRW_custom_pipeline(DrawEngineType *draw_engine_type, diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 43025d9fef4..2beab021cfb 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1953,6 +1953,14 @@ void DRW_render_instance_buffer_finish(void) drw_resource_buffer_finish(DST.vmempool); } +/* WARNING: Changing frame might free the ViewLayerEngineData */ +void DRW_render_set_time(RenderEngine *engine, Depsgraph *depsgraph, int frame, float subframe) +{ + RE_engine_frame_set(engine, frame, subframe); + DST.draw_ctx.scene = DEG_get_evaluated_scene(depsgraph); + DST.draw_ctx.view_layer = DEG_get_evaluated_view_layer(depsgraph); +} + /** * object mode select-loop, see: ED_view3d_draw_select_loop (legacy drawing). */ -- cgit v1.2.3