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:
Diffstat (limited to 'source/blender/blenkernel/intern/blender_undo.c')
-rw-r--r--source/blender/blenkernel/intern/blender_undo.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/blender_undo.c b/source/blender/blenkernel/intern/blender_undo.c
index 9ccc53b6318..bb705e2295c 100644
--- a/source/blender/blenkernel/intern/blender_undo.c
+++ b/source/blender/blenkernel/intern/blender_undo.c
@@ -61,7 +61,10 @@
#define UNDO_DISK 0
-bool BKE_memfile_undo_decode(MemFileUndoData *mfu, bContext *C)
+bool BKE_memfile_undo_decode(MemFileUndoData *mfu,
+ const int undo_direction,
+ const bool use_old_bmain_data,
+ bContext *C)
{
Main *bmain = CTX_data_main(C);
char mainstr[sizeof(bmain->name)];
@@ -76,8 +79,12 @@ bool BKE_memfile_undo_decode(MemFileUndoData *mfu, bContext *C)
success = BKE_blendfile_read(C, mfu->filename, &(const struct BlendFileReadParams){0}, NULL);
}
else {
- success = BKE_blendfile_read_from_memfile(
- C, &mfu->memfile, &(const struct BlendFileReadParams){0}, NULL);
+ struct BlendFileReadParams params = {0};
+ params.undo_direction = undo_direction > 0 ? 1 : -1;
+ if (!use_old_bmain_data) {
+ params.skip_flags |= BLO_READ_SKIP_UNDO_OLD_MAIN;
+ }
+ success = BKE_blendfile_read_from_memfile(C, &mfu->memfile, &params, NULL);
}
/* Restore, bmain has been re-allocated. */