diff options
Diffstat (limited to 'source/blender/blenkernel/intern/blender_undo.c')
-rw-r--r-- | source/blender/blenkernel/intern/blender_undo.c | 13 |
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, ¶ms, NULL); } /* Restore, bmain has been re-allocated. */ |