Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-07-05 17:55:46 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-07-05 17:56:47 +0300
commit5db711fdd9d23ef2e54f19545398a6520fa02b56 (patch)
tree6256efab318ba30bd5304301df296d3137ff8627 /source/blender/depsgraph
parentec98d8cc9e34b3b4c8b5e73997e708276775c20a (diff)
Depsgraph: Preserve engine data when doing object copy on write update
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc6
1 files changed, 6 insertions, 0 deletions
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 0f49d57a826..447a8af6235 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
@@ -713,6 +713,7 @@ typedef struct ObjectRuntimeBackup {
CurveCache *curve_cache;
Object_Runtime runtime;
short base_flag;
+ ListBase drawdata;
} ObjectRuntimeBackup;
/* Make a backup of object's evaluation runtime data, additionally
@@ -739,6 +740,9 @@ static void deg_backup_object_runtime(
object->curve_cache = NULL;
/* Make a backup of base flags. */
object_runtime_backup->base_flag = object->base_flag;
+ /* Make backup of object draw data.*/
+ object_runtime_backup->drawdata = object->drawdata;
+ BLI_listbase_clear(&object->drawdata);
}
static void deg_restore_object_runtime(
@@ -778,6 +782,8 @@ static void deg_restore_object_runtime(
object->curve_cache = object_runtime_backup->curve_cache;
}
object->base_flag = object_runtime_backup->base_flag;
+ /* Restore draw data. */
+ object->drawdata = object_runtime_backup->drawdata;
}
ID *deg_update_copy_on_write_datablock(const Depsgraph *depsgraph,