Commit: 56237f33a16b9ec4c6f271b09b66eeabc5306e44 Author: Brecht Van Lommel Date: Wed Dec 14 19:47:21 2022 +0100 Branches: master https://developer.blender.org/rB56237f33a16b9ec4c6f271b09b66eeabc5306e44
Fix T103101: random Cycles animation rendering freezing up the application =================================================================== M source/blender/render/intern/engine.cc =================================================================== diff --git a/source/blender/render/intern/engine.cc b/source/blender/render/intern/engine.cc index b9672246c5f..7d78f957e31 100644 --- a/source/blender/render/intern/engine.cc +++ b/source/blender/render/intern/engine.cc @@ -1046,14 +1046,19 @@ bool RE_engine_render(Render *re, bool do_all) re->engine = engine; } - /* create render result */ + /* Create render result. Do this before acquiring lock, to avoid lock + * inversion as this calls python to get the render passes, while python UI + * code can also hold a lock on the render result. */ + const bool create_new_result = (re->result == nullptr || !(re->r.scemode & R_BUTS_PREVIEW)); + RenderResult *new_result = engine_render_create_result(re); + BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE); - if (re->result == nullptr || !(re->r.scemode & R_BUTS_PREVIEW)) { + if (create_new_result) { if (re->result) { render_result_free(re->result); } - re->result = engine_render_create_result(re); + re->result = new_result; } BLI_rw_mutex_unlock(&re->resultmutex); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs