[Bf-blender-cvs] [12bdf61fc3a] undo-experiments: undoexp: transfer set of used ID pointers from old to new bmain in undo case.

Bastien Montagne noreply at git.blender.org
Fri Feb 14 15:35:37 CET 2020


Commit: 12bdf61fc3a63a9c20bcbbf4f3a586f5597f4ffa
Author: Bastien Montagne
Date:   Fri Feb 14 15:35:01 2020 +0100
Branches: undo-experiments
https://developer.blender.org/rB12bdf61fc3a63a9c20bcbbf4f3a586f5597f4ffa

undoexp: transfer set of used ID pointers from old to new bmain in undo case.

===================================================================

M	source/blender/blenloader/intern/readfile.c

===================================================================

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 80f5a49c762..e44f6693a0c 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -9902,7 +9902,13 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath)
   bfd = MEM_callocN(sizeof(BlendFileData), "blendfiledata");
 
   bfd->main = BKE_main_new();
-  BKE_main_idmemset_ensure(bfd->main);
+  if (fd->memfile != NULL) {
+    /* In undo case we want to keep the set of qlreqdy used ID pointers... */
+    BKE_main_idmemset_transfer_ownership(bfd->main, fd->old_mainlist->first);
+  }
+  else {
+    BKE_main_idmemset_ensure(bfd->main);
+  }
   bfd->main->versionfile = fd->fileversion;
 
   bfd->type = BLENFILETYPE_BLEND;



More information about the Bf-blender-cvs mailing list