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>2017-07-25 15:53:19 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-07-25 15:53:19 +0300
commitf7636f0ef2b39eb2c6ee814684621a9c693fbdb8 (patch)
tree2b0429cd7a62a1e38abb4a10344c1766ffaacc81
parent6a7d7586e5aaffbc9ea9eae5338a159b6b3e68b8 (diff)
Depsgraph: Make sure armature mode is properly changed in all copied versions
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc1
-rw-r--r--source/blender/editors/armature/pose_edit.c8
2 files changed, 7 insertions, 2 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 617045049fc..b0e8760174a 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
@@ -566,6 +566,7 @@ void update_copy_on_write_object(const Depsgraph * /*depsgraph*/,
extract_pose_from_pose(pose_cow, pose_orig);
/* Update object itself. */
BKE_object_transform_copy(object_cow, object_orig);
+ object_cow->mode = object_orig->mode;
}
/* Update copy-on-write version of datablock from it's original ID without re-building
diff --git a/source/blender/editors/armature/pose_edit.c b/source/blender/editors/armature/pose_edit.c
index 481d4aadfb7..7a8b89899a7 100644
--- a/source/blender/editors/armature/pose_edit.c
+++ b/source/blender/editors/armature/pose_edit.c
@@ -96,7 +96,8 @@ void ED_armature_enter_posemode(bContext *C, Base *base)
case OB_ARMATURE:
ob->restore_mode = ob->mode;
ob->mode |= OB_MODE_POSE;
-
+ /* Inform all CoW versions that we changed the mode. */
+ DEG_id_tag_update_ex(CTX_data_main(C), &ob->id, DEG_TAG_COPY_ON_WRITE);
WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_POSE, NULL);
break;
@@ -115,7 +116,10 @@ void ED_armature_exit_posemode(bContext *C, Base *base)
ob->restore_mode = ob->mode;
ob->mode &= ~OB_MODE_POSE;
-
+
+ /* Inform all CoW versions that we changed the mode. */
+ DEG_id_tag_update_ex(CTX_data_main(C), &ob->id, DEG_TAG_COPY_ON_WRITE);
+
WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, NULL);
}
}