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/engines/eevee/eevee_data.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source/blender/draw/engines/eevee/eevee_data.c') diff --git a/source/blender/draw/engines/eevee/eevee_data.c b/source/blender/draw/engines/eevee/eevee_data.c index 55bbf7740e3..c475e5287c2 100644 --- a/source/blender/draw/engines/eevee/eevee_data.c +++ b/source/blender/draw/engines/eevee/eevee_data.c @@ -237,6 +237,11 @@ EEVEE_ViewLayerData *EEVEE_view_layer_data_get(void) return (EEVEE_ViewLayerData *)DRW_view_layer_engine_data_get(&draw_engine_eevee_type); } +static void eevee_view_layer_init(EEVEE_ViewLayerData *sldata) +{ + sldata->common_ubo = DRW_uniformbuffer_create(sizeof(sldata->common_data), NULL); +} + EEVEE_ViewLayerData *EEVEE_view_layer_data_ensure_ex(struct ViewLayer *view_layer) { EEVEE_ViewLayerData **sldata = (EEVEE_ViewLayerData **)DRW_view_layer_engine_data_ensure_ex( @@ -244,6 +249,7 @@ EEVEE_ViewLayerData *EEVEE_view_layer_data_ensure_ex(struct ViewLayer *view_laye if (*sldata == NULL) { *sldata = MEM_callocN(sizeof(**sldata), "EEVEE_ViewLayerData"); + eevee_view_layer_init(*sldata); } return *sldata; @@ -256,6 +262,7 @@ EEVEE_ViewLayerData *EEVEE_view_layer_data_ensure(void) if (*sldata == NULL) { *sldata = MEM_callocN(sizeof(**sldata), "EEVEE_ViewLayerData"); + eevee_view_layer_init(*sldata); } return *sldata; -- cgit v1.2.3