[Bf-blender-cvs] [16a290bb6fd] master: Fix Object bbox memleak in depsgraph code.
Bastien Montagne
noreply at git.blender.org
Mon Feb 18 18:29:02 CET 2019
Commit: 16a290bb6fd8e9b16c10b92328ad60d451ec5e2c
Author: Bastien Montagne
Date: Mon Feb 18 18:15:00 2019 +0100
Branches: master
https://developer.blender.org/rB16a290bb6fd8e9b16c10b92328ad60d451ec5e2c
Fix Object bbox memleak in depsgraph code.
Caused by rBae2b677dcb5a70f5, Object.runtime has lot of weird specific
handlings in depsgraph...
For now modified `deg_backup_object_runtime()` and
`deg_restore_object_runtime()` to mimic previous behavior regarding
Object bbox (i.e. pass it around, instead of wiping it clean).
Reported in T61660.
===================================================================
M source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
===================================================================
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
index f3a56cd9de1..7775a2b3cd2 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
@@ -815,6 +815,8 @@ static void deg_backup_object_runtime(
Mesh *mesh_eval = object->runtime.mesh_eval;
object_runtime_backup->runtime = object->runtime;
BKE_object_runtime_reset(object);
+ /* Keep bbox (for now at least...). */
+ object->runtime.bb = object_runtime_backup->runtime.bb;
/* Object update will override actual object->data to an evaluated version.
* Need to make sure we don't have data set to evaluated one before free
* anything. */
@@ -831,8 +833,10 @@ static void deg_restore_object_runtime(
const ObjectRuntimeBackup *object_runtime_backup)
{
Mesh *mesh_orig = object->runtime.mesh_orig;
+ BoundBox *bb = object->runtime.bb;
object->runtime = object_runtime_backup->runtime;
object->runtime.mesh_orig = mesh_orig;
+ object->runtime.bb = bb;
if (object->type == OB_MESH && object->runtime.mesh_eval != NULL) {
if (object->id.recalc & ID_RECALC_GEOMETRY) {
/* If geometry is tagged for update it means, that part of
More information about the Bf-blender-cvs
mailing list