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>2021-03-11 16:34:21 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-03-11 16:40:52 +0300
commit5812bc7d8908015b8a06d240da7964be0a19a2c3 (patch)
tree4b1e62d92c877d894d750732e723cd6eaa15e80e /source/blender/blenkernel/intern/blender_undo.c
parentf7616c6eaf8d983e84aeb838d51fe67e4fa98e16 (diff)
Cleanup: split file read and setup into separate steps
Currently file loading performs almost all reloading logic even in the case loading the file fails, causing the file to be in a state that isn't well defined: undo is cleared, timers are canceled & scripts are re-registered.
Diffstat (limited to 'source/blender/blenkernel/intern/blender_undo.c')
-rw-r--r--source/blender/blenkernel/intern/blender_undo.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/blender_undo.c b/source/blender/blenkernel/intern/blender_undo.c
index d826aaf24e3..9f8a30722c2 100644
--- a/source/blender/blenkernel/intern/blender_undo.c
+++ b/source/blender/blenkernel/intern/blender_undo.c
@@ -77,7 +77,12 @@ bool BKE_memfile_undo_decode(MemFileUndoData *mfu,
G.fileflags |= G_FILE_NO_UI;
if (UNDO_DISK) {
- success = BKE_blendfile_read(C, mfu->filename, &(const struct BlendFileReadParams){0}, NULL);
+ const struct BlendFileReadParams params = {0};
+ struct BlendFileData *bfd = BKE_blendfile_read(mfu->filename, &params, NULL);
+ if (bfd != NULL) {
+ BKE_blendfile_read_setup(C, bfd, &params, NULL);
+ success = true;
+ }
}
else {
struct BlendFileReadParams params = {0};
@@ -85,7 +90,12 @@ bool BKE_memfile_undo_decode(MemFileUndoData *mfu,
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);
+ struct BlendFileData *bfd = BKE_blendfile_read_from_memfile(
+ bmain, &mfu->memfile, &params, NULL);
+ if (bfd != NULL) {
+ BKE_blendfile_read_setup(C, bfd, &params, NULL);
+ success = true;
+ }
}
/* Restore, bmain has been re-allocated. */