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:
authorCampbell Barton <ideasman42@gmail.com>2019-11-07 08:52:03 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-11-07 08:56:21 +0300
commit79b703bb635ea719bbe31c1ece9884d2d298eaef (patch)
tree7ee7e896e8e66233f85dd425708a595f66607f48 /source/blender/makesdna
parent85637311c28f49b55286d3287d4c7cefbcbca18a (diff)
Fix T69822: Switching sculpt objects breaks undo
This introduces object mode tagging for data which hasn't yet been written back to the ID data. Now when selecting other sculpt objects, the original objects data is flushed back to the ID before writing a memfile undo step.
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r--source/blender/makesdna/DNA_armature_types.h4
-rw-r--r--source/blender/makesdna/DNA_curve_types.h7
-rw-r--r--source/blender/makesdna/DNA_lattice_types.h6
-rw-r--r--source/blender/makesdna/DNA_meta_types.h8
4 files changed, 23 insertions, 2 deletions
diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h
index 1b2345809ad..3bad2a04a65 100644
--- a/source/blender/makesdna/DNA_armature_types.h
+++ b/source/blender/makesdna/DNA_armature_types.h
@@ -126,6 +126,10 @@ typedef struct bArmature {
/** Active editbone (in editmode). */
struct EditBone *act_edbone;
+ /** ID data is older than edit-mode data (TODO: move to edit-mode struct). */
+ char needs_flush_to_id;
+ char _pad0[7];
+
int flag;
int drawtype;
diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h
index 7a641189bcb..13eaa8925bc 100644
--- a/source/blender/makesdna/DNA_curve_types.h
+++ b/source/blender/makesdna/DNA_curve_types.h
@@ -206,7 +206,12 @@ typedef struct EditNurb {
/* shape key being edited */
int shapenr;
- char _pad[4];
+ /**
+ * ID data is older than edit-mode data.
+ * Set #Main.is_memfile_undo_flush_needed when enabling.
+ */
+ char needs_flush_to_id;
+
} EditNurb;
typedef struct Curve {
diff --git a/source/blender/makesdna/DNA_lattice_types.h b/source/blender/makesdna/DNA_lattice_types.h
index 3864593158d..f67553c34de 100644
--- a/source/blender/makesdna/DNA_lattice_types.h
+++ b/source/blender/makesdna/DNA_lattice_types.h
@@ -39,6 +39,12 @@ typedef struct EditLatt {
struct Lattice *latt;
int shapenr;
+
+ /**
+ * ID data is older than edit-mode data.
+ * Set #Main.is_memfile_undo_flush_needed when enabling.
+ */
+ char needs_flush_to_id;
} EditLatt;
typedef struct Lattice {
diff --git a/source/blender/makesdna/DNA_meta_types.h b/source/blender/makesdna/DNA_meta_types.h
index c98842eb6d7..8b218dd7ce6 100644
--- a/source/blender/makesdna/DNA_meta_types.h
+++ b/source/blender/makesdna/DNA_meta_types.h
@@ -81,7 +81,13 @@ typedef struct MetaBall {
short totcol;
/** Used to store MB_AUTOSPACE. */
short texflag;
- char _pad[2];
+ char _pad[1];
+
+ /**
+ * ID data is older than edit-mode data (TODO: move to edit-mode struct).
+ * Set #Main.is_memfile_undo_flush_needed when enabling.
+ */
+ char needs_flush_to_id;
/* texture space, copied as one block in editobject.c */
float loc[3];