EEVEE: Fix memleak when G.is_break is set from another thread
This commit is contained in:
parent
189a6c783d
commit
c26f470cfe
Notes:
blender-bot
2023-02-14 10:37:50 +01:00
Referenced by issue #75106, Can't see wireframe (vertex, selected components) through semi-transparent object Referenced by issue #74805, Back faces flicker when Auto Depth and Backface Culling is enabled Referenced by issue #74692, Sculpt Mode significantly laggy after the addition of Face Sets?
|
@ -421,9 +421,8 @@ static void eevee_render_to_image(void *vedata,
|
|||
const rcti *rect)
|
||||
{
|
||||
const DRWContextState *draw_ctx = DRW_context_state_get();
|
||||
EEVEE_render_init(vedata, engine, draw_ctx->depsgraph);
|
||||
|
||||
if (RE_engine_test_break(engine)) {
|
||||
if (!EEVEE_render_init(vedata, engine, draw_ctx->depsgraph)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1168,7 +1168,7 @@ void EEVEE_draw_effects(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata);
|
|||
void EEVEE_effects_free(void);
|
||||
|
||||
/* eevee_render.c */
|
||||
void EEVEE_render_init(EEVEE_Data *vedata,
|
||||
bool EEVEE_render_init(EEVEE_Data *vedata,
|
||||
struct RenderEngine *engine,
|
||||
struct Depsgraph *depsgraph);
|
||||
void EEVEE_render_cache(void *vedata,
|
||||
|
|
|
@ -46,7 +46,8 @@
|
|||
|
||||
#include "eevee_private.h"
|
||||
|
||||
void EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *depsgraph)
|
||||
/* Return true if init properly. */
|
||||
bool EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *depsgraph)
|
||||
{
|
||||
EEVEE_Data *vedata = (EEVEE_Data *)ved;
|
||||
EEVEE_StorageList *stl = vedata->stl;
|
||||
|
@ -106,7 +107,7 @@ void EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *
|
|||
max_dim);
|
||||
RE_engine_set_error_message(engine, error_msg);
|
||||
G.is_break = true;
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* XXX overriding viewport size. Simplify things but is not really 100% safe. */
|
||||
|
@ -168,6 +169,8 @@ void EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *
|
|||
EEVEE_subsurface_cache_init(sldata, vedata);
|
||||
EEVEE_temporal_sampling_cache_init(sldata, vedata);
|
||||
EEVEE_volumes_cache_init(sldata, vedata);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Used by light cache. in this case engine is NULL. */
|
||||
|
|
Loading…
Reference in New Issue