From e0852368bc2b19c924a458df4e21d3112998a180 Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Thu, 22 Apr 2021 10:04:59 -0300 Subject: Fix missing include --- source/blender/editors/transform/transform_snap_object.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c index e97d49e0971..541d173ca28 100644 --- a/source/blender/editors/transform/transform_snap_object.c +++ b/source/blender/editors/transform/transform_snap_object.c @@ -43,6 +43,7 @@ #include "BKE_curve.h" #include "BKE_duplilist.h" #include "BKE_editmesh.h" +#include "BKE_geometry_set.h" #include "BKE_layer.h" #include "BKE_mesh.h" #include "BKE_mesh_runtime.h" -- cgit v1.2.3 From f240b5e5f712d375c82763057c1c29e95d011ca5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 22 Apr 2021 15:12:16 +0200 Subject: Fix T87701: debug assert generating scene preview render --- source/blender/render/intern/engine.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/source/blender/render/intern/engine.c b/source/blender/render/intern/engine.c index 817f09f5bfe..66d38eb19c7 100644 --- a/source/blender/render/intern/engine.c +++ b/source/blender/render/intern/engine.c @@ -143,12 +143,9 @@ RenderEngine *RE_engine_create(RenderEngineType *type) static void engine_depsgraph_free(RenderEngine *engine) { if (engine->depsgraph) { - /* Need GPU context since this might free GPU buffers. This function can - * only be called from a render thread. We do not currently support - * persistent data with GPU contexts for that reason. */ + /* Need GPU context since this might free GPU buffers. */ const bool use_gpu_context = (engine->type->flag & RE_USE_GPU_CONTEXT); if (use_gpu_context) { - BLI_assert(!BLI_thread_is_main()); DRW_render_context_enable(engine->re); } @@ -623,8 +620,8 @@ RenderData *RE_engine_get_render_data(Render *re) bool RE_engine_use_persistent_data(RenderEngine *engine) { - /* See engine_depsgraph_free() for why preserving the depsgraph for - * re-renders is not supported with GPU contexts. */ + /* Re-rendering is not supported with GPU contexts, since the GPU context + * is destroyed when the render thread exists. */ return (engine->re->r.mode & R_PERSISTENT_DATA) && !(engine->type->flag & RE_USE_GPU_CONTEXT); } -- cgit v1.2.3 From 3cb09f7a835b5af9c39e1599b44af4b151b7e77d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 23 Apr 2021 09:01:57 +1000 Subject: Cleanup: quiet clang-tidy warning --- source/blender/editors/transform/transform_snap_object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c index 541d173ca28..e5f6f207e3c 100644 --- a/source/blender/editors/transform/transform_snap_object.c +++ b/source/blender/editors/transform/transform_snap_object.c @@ -2237,7 +2237,7 @@ static short snapMesh(SnapObjectContext *sctx, if (me->totvert == 0) { return 0; } - else if (me->totedge == 0 && !(snapdata->snap_to_flag & SCE_SNAP_MODE_VERTEX)) { + if (me->totedge == 0 && !(snapdata->snap_to_flag & SCE_SNAP_MODE_VERTEX)) { return 0; } -- cgit v1.2.3 From a23e49c696cf9ac66ecb9c1ad009d38b0a5e9f9f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 23 Apr 2021 09:02:49 +1000 Subject: Fix T86170: Memory leak clearing the Python instance for COW id data As Python can access COW ID's, ensure it's instance is kept on update. This could happen when the "Use Self" argument was enabled for a driver. --- source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.cc | 5 +++++ source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.cc b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.cc index 7a0c1b5b693..0064240db23 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.cc @@ -33,6 +33,7 @@ namespace blender::deg { RuntimeBackup::RuntimeBackup(const Depsgraph *depsgraph) : have_backup(false), + id_data({.py_instance = nullptr}), animation_backup(depsgraph), scene_backup(depsgraph), sound_backup(depsgraph), @@ -51,6 +52,8 @@ void RuntimeBackup::init_from_id(ID *id) } have_backup = true; + id_data.py_instance = id->py_instance; + animation_backup.init_from_id(id); const ID_Type id_type = GS(id->name); @@ -89,6 +92,8 @@ void RuntimeBackup::restore_to_id(ID *id) return; } + id->py_instance = id_data.py_instance; + animation_backup.restore_to_id(id); const ID_Type id_type = GS(id->name); diff --git a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.h b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.h index c6249c83daa..0629dbe62b4 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.h +++ b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.h @@ -58,6 +58,11 @@ class RuntimeBackup { * copy-on-write mechanism. */ bool have_backup; + /* Struct members of the ID pointer. */ + struct { + void *py_instance; + } id_data; + AnimationBackup animation_backup; SceneBackup scene_backup; SoundBackup sound_backup; -- cgit v1.2.3