[Bf-blender-cvs] [82c17082ba0] master: Revert "Revert "Enhanced stats/reports for blendfile reading.""

Bastien Montagne noreply at git.blender.org
Wed Jun 23 10:43:58 CEST 2021


Commit: 82c17082ba0e53d782ac6be703d71d188a331dde
Author: Bastien Montagne
Date:   Wed Jun 23 09:51:11 2021 +0200
Branches: master
https://developer.blender.org/rB82c17082ba0e53d782ac6be703d71d188a331dde

Revert "Revert "Enhanced stats/reports for blendfile reading.""

This reverts commit rB3a48147b8ab92, and fixes the issues with linking
etc.

Change compared to previous buggy commit (rBf8d219dfd4c31) is that
new `BlendFileReadReports` reports are now passed to the lowest level
function generating the `FileData` (`filedata_new()`), which ensures
(and asserts) that all code using it does have a valid non-NULL pointer
to a `BlendFileReadReport` data.

Sorry for the noise, it's always when you think a change is trivial and
do not test it well enough that you end up doing those kind of
mistakes...

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

M	source/blender/blenkernel/BKE_blendfile.h
M	source/blender/blenkernel/BKE_lib_override.h
M	source/blender/blenkernel/intern/blender_copybuffer.c
M	source/blender/blenkernel/intern/blender_undo.c
M	source/blender/blenkernel/intern/blendfile.c
M	source/blender/blenkernel/intern/lib_override.c
M	source/blender/blenloader/BLO_read_write.h
M	source/blender/blenloader/BLO_readfile.h
M	source/blender/blenloader/intern/blend_validate.c
M	source/blender/blenloader/intern/readblenentry.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/readfile.h
M	source/blender/blenloader/intern/readfile_tempload.c
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/blenloader/tests/blendfile_loading_base_test.cc
M	source/blender/editors/space_file/filelist.c
M	source/blender/editors/space_outliner/outliner_tools.c
M	source/blender/imbuf/intern/thumbs_blend.c
M	source/blender/python/intern/bpy_library_load.c
M	source/blender/windowmanager/intern/wm_files.c
M	source/blender/windowmanager/intern/wm_files_link.c

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

diff --git a/source/blender/blenkernel/BKE_blendfile.h b/source/blender/blenkernel/BKE_blendfile.h
index 429e294a337..3e0a343a766 100644
--- a/source/blender/blenkernel/BKE_blendfile.h
+++ b/source/blender/blenkernel/BKE_blendfile.h
@@ -25,6 +25,7 @@ extern "C" {
 
 struct BlendFileData;
 struct BlendFileReadParams;
+struct BlendFileReadReport;
 struct ID;
 struct Main;
 struct MemFile;
@@ -35,7 +36,7 @@ struct bContext;
 void BKE_blendfile_read_setup_ex(struct bContext *C,
                                  struct BlendFileData *bfd,
                                  const struct BlendFileReadParams *params,
-                                 struct ReportList *reports,
+                                 struct BlendFileReadReport *reports,
                                  /* Extra args. */
                                  const bool startup_update_defaults,
                                  const char *startup_app_template);
@@ -43,11 +44,11 @@ void BKE_blendfile_read_setup_ex(struct bContext *C,
 void BKE_blendfile_read_setup(struct bContext *C,
                               struct BlendFileData *bfd,
                               const struct BlendFileReadParams *params,
-                              struct ReportList *reports);
+                              struct BlendFileReadReport *reports);
 
 struct BlendFileData *BKE_blendfile_read(const char *filepath,
                                          const struct BlendFileReadParams *params,
-                                         struct ReportList *reports);
+                                         struct BlendFileReadReport *reports);
 
 struct BlendFileData *BKE_blendfile_read_from_memory(const void *filebuf,
                                                      int filelength,
diff --git a/source/blender/blenkernel/BKE_lib_override.h b/source/blender/blenkernel/BKE_lib_override.h
index 4dc99e64cf2..3eb0ff44129 100644
--- a/source/blender/blenkernel/BKE_lib_override.h
+++ b/source/blender/blenkernel/BKE_lib_override.h
@@ -43,6 +43,7 @@ extern "C" {
 #endif
 
 struct Collection;
+struct BlendFileReadReport;
 struct ID;
 struct IDOverrideLibrary;
 struct IDOverrideLibraryProperty;
@@ -90,11 +91,11 @@ bool BKE_lib_override_library_resync(struct Main *bmain,
                                      struct Collection *override_resync_residual_storage,
                                      const bool do_hierarchy_enforce,
                                      const bool do_post_process,
-                                     struct ReportList *reports);
+                                     struct BlendFileReadReport *reports);
 void BKE_lib_override_library_main_resync(struct Main *bmain,
                                           struct Scene *scene,
                                           struct ViewLayer *view_layer,
-                                          struct ReportList *reports);
+                                          struct BlendFileReadReport *reports);
 
 void BKE_lib_override_library_delete(struct Main *bmain, struct ID *id_root);
 
diff --git a/source/blender/blenkernel/intern/blender_copybuffer.c b/source/blender/blenkernel/intern/blender_copybuffer.c
index dfd49a347ca..c8fedc086b8 100644
--- a/source/blender/blenkernel/intern/blender_copybuffer.c
+++ b/source/blender/blenkernel/intern/blender_copybuffer.c
@@ -87,7 +87,7 @@ bool BKE_copybuffer_read(Main *bmain_dst,
                          ReportList *reports,
                          const uint64_t id_types_mask)
 {
-  BlendHandle *bh = BLO_blendhandle_from_file(libname, reports);
+  BlendHandle *bh = BLO_blendhandle_from_file(libname, &(BlendFileReadReport){.reports = reports});
   if (bh == NULL) {
     /* Error reports will have been made by BLO_blendhandle_from_file(). */
     return false;
@@ -133,7 +133,7 @@ int BKE_copybuffer_paste(bContext *C,
   BlendHandle *bh;
   const int id_tag_extra = 0;
 
-  bh = BLO_blendhandle_from_file(libname, reports);
+  bh = BLO_blendhandle_from_file(libname, &(BlendFileReadReport){.reports = reports});
 
   if (bh == NULL) {
     /* error reports will have been made by BLO_blendhandle_from_file() */
diff --git a/source/blender/blenkernel/intern/blender_undo.c b/source/blender/blenkernel/intern/blender_undo.c
index ba41786c7fd..6f47cd1336e 100644
--- a/source/blender/blenkernel/intern/blender_undo.c
+++ b/source/blender/blenkernel/intern/blender_undo.c
@@ -78,9 +78,10 @@ bool BKE_memfile_undo_decode(MemFileUndoData *mfu,
 
   if (UNDO_DISK) {
     const struct BlendFileReadParams params = {0};
-    struct BlendFileData *bfd = BKE_blendfile_read(mfu->filename, &params, NULL);
+    struct BlendFileData *bfd = BKE_blendfile_read(
+        mfu->filename, &params, &(BlendFileReadReport){NULL});
     if (bfd != NULL) {
-      BKE_blendfile_read_setup(C, bfd, &params, NULL);
+      BKE_blendfile_read_setup(C, bfd, &params, &(BlendFileReadReport){NULL});
       success = true;
     }
   }
@@ -93,7 +94,7 @@ bool BKE_memfile_undo_decode(MemFileUndoData *mfu,
     struct BlendFileData *bfd = BKE_blendfile_read_from_memfile(
         bmain, &mfu->memfile, &params, NULL);
     if (bfd != NULL) {
-      BKE_blendfile_read_setup(C, bfd, &params, NULL);
+      BKE_blendfile_read_setup(C, bfd, &params, &(BlendFileReadReport){NULL});
       success = true;
     }
   }
diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c
index e335dd4bdcd..9ea1c8fedda 100644
--- a/source/blender/blenkernel/intern/blendfile.c
+++ b/source/blender/blenkernel/intern/blendfile.c
@@ -36,6 +36,8 @@
 #include "BLI_system.h"
 #include "BLI_utildefines.h"
 
+#include "PIL_time.h"
+
 #include "IMB_colormanagement.h"
 
 #include "BKE_addon.h"
@@ -136,7 +138,7 @@ static void setup_app_userdef(BlendFileData *bfd)
 static void setup_app_data(bContext *C,
                            BlendFileData *bfd,
                            const struct BlendFileReadParams *params,
-                           ReportList *reports)
+                           BlendFileReadReport *reports)
 {
   Main *bmain = G_MAIN;
   Scene *curscene = NULL;
@@ -155,7 +157,7 @@ static void setup_app_data(bContext *C,
   /* may happen with library files - UNDO file should never have NULL curscene (but may have a
    * NULL curscreen)... */
   else if (ELEM(NULL, bfd->curscreen, bfd->curscene)) {
-    BKE_report(reports, RPT_WARNING, "Library file, loading empty scene");
+    BKE_report(reports->reports, RPT_WARNING, "Library file, loading empty scene");
     mode = LOAD_UI_OFF;
   }
   else if (G.fileflags & G_FILE_NO_UI) {
@@ -396,11 +398,17 @@ static void setup_app_data(bContext *C,
   }
 
   if (mode != LOAD_UNDO && !USER_EXPERIMENTAL_TEST(&U, no_override_auto_resync)) {
+    reports->duration.lib_overrides_resync = PIL_check_seconds_timer();
+
     BKE_lib_override_library_main_resync(
         bmain,
         curscene,
         bfd->cur_view_layer ? bfd->cur_view_layer : BKE_view_layer_default_view(curscene),
         reports);
+
+    reports->duration.lib_overrides_resync = PIL_check_seconds_timer() -
+                                             reports->duration.lib_overrides_resync;
+
     /* We need to rebuild some of the deleted override rules (for UI feedback purpose). */
     BKE_lib_override_library_main_operations_create(bmain, true);
   }
@@ -409,7 +417,7 @@ static void setup_app_data(bContext *C,
 static void setup_app_blend_file_data(bContext *C,
                                       BlendFileData *bfd,
                                       const struct BlendFileReadParams *params,
-                                      ReportList *reports)
+                                      BlendFileReadReport *reports)
 {
   if ((params->skip_flags & BLO_READ_SKIP_USERDEF) == 0) {
     setup_app_userdef(bfd);
@@ -419,12 +427,12 @@ static void setup_app_blend_file_data(bContext *C,
   }
 }
 
-static void handle_subversion_warning(Main *main, ReportList *reports)
+static void handle_subversion_warning(Main *main, BlendFileReadReport *reports)
 {
   if (main->minversionfile > BLENDER_FILE_VERSION ||
       (main->minversionfile == BLENDER_FILE_VERSION &&
        main->minsubversionfile > BLENDER_FILE_SUBVERSION)) {
-    BKE_reportf(reports,
+    BKE_reportf(reports->reports,
                 RPT_ERROR,
                 "File written by newer Blender binary (%d.%d), expect loss of data!",
                 main->minversionfile,
@@ -443,7 +451,7 @@ static void handle_subversion_warning(Main *main, ReportList *reports)
 void BKE_blendfile_read_setup_ex(bContext *C,
                                  BlendFileData *bfd,
                                  const struct BlendFileReadParams *params,
-                                 ReportList *reports,
+                                 BlendFileReadReport *reports,
                                  /* Extra args. */
                                  const bool startup_update_defaults,
                                  const char *startup_app_template)
@@ -460,7 +468,7 @@ void BKE_blendfile_read_setup_ex(bContext *C,
 void BKE_blendfile_read_setup(bContext *C,
                               BlendFileData *bfd,
                               const struct BlendFileReadParams *params,
-                              ReportList *reports)
+                              BlendFileReadReport *reports)
 {
   BKE_blendfile_read_setup_ex(C, bfd, params, reports, false, NULL);
 }
@@ -470,7 +478,7 @@ void BKE_blendfile_read_setup(bContext *C,
  */
 struct BlendFileData *BKE_blendfile_read(const char *filepath,
                                          const struct BlendFileReadParams *params,
-                                         ReportList *reports)
+                                         BlendFileReadReport *reports)
 {
   /* Don't print startup file loading. */
   if (params->is_startup == false) {
@@ -482,7 +490,7 @@ struct BlendFileData *BKE_blendfile_read(const char *filepath,
     handle_subversion_warning(bfd->main, reports);
   }
   else {
-    BKE_reports_prependf(reports, "Loading '%s' failed: ", filepath);
+    BKE_reports_prependf(reports->reports, "Loading '%s' failed: ", filepath);
   }
   return bfd;
 }
@@ -559,7 +567,9 @@ UserDef *BKE_blendfile_user

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list