[Bf-blender-cvs] [211946fe679] override-recursive-resync: Finish first pass of enhanced stats/reports for file loading.
Bastien Montagne
noreply at git.blender.org
Fri Jun 11 17:56:18 CEST 2021
Commit: 211946fe679faa3fd8ccc3850499ccd1d630f866
Author: Bastien Montagne
Date: Fri Jun 11 17:55:35 2021 +0200
Branches: override-recursive-resync
https://developer.blender.org/rB211946fe679faa3fd8ccc3850499ccd1d630f866
Finish first pass of enhanced stats/reports for file loading.
===================================================================
M source/blender/blenkernel/intern/lib_override.c
M source/blender/blenloader/BLO_readfile.h
M source/blender/windowmanager/intern/wm_files.c
===================================================================
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index 6b3ee8f5c1f..aaf850696b0 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -55,6 +55,7 @@
#include "BLO_readfile.h"
#include "BLI_ghash.h"
+#include "BLI_linklist.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_task.h"
@@ -1537,6 +1538,7 @@ static void lib_override_library_main_resync_on_library_indirect_level(
(!ID_IS_LINKED(id) && library_indirect_level != 0)) {
continue;
}
+ Library *library = id->lib;
int level = 0;
/* In complex non-supported cases, with several different override hierarchies sharing
@@ -1548,12 +1550,21 @@ static void lib_override_library_main_resync_on_library_indirect_level(
id = lib_override_library_main_resync_find_root_recurse(id, &level);
id->tag &= ~LIB_TAG_LIB_OVERRIDE_NEED_RESYNC;
BLI_assert(ID_IS_OVERRIDE_LIBRARY_REAL(id));
+ BLI_assert(id->lib == library);
do_continue = true;
- CLOG_INFO(&LOG, 2, "Resyncing %s (%p)...", id->name, id->lib);
+ CLOG_INFO(&LOG, 2, "Resyncing %s (%p)...", id->name, library);
const bool success = BKE_lib_override_library_resync(
bmain, scene, view_layer, id, override_resync_residual_storage, false, false, reports);
CLOG_INFO(&LOG, 2, "\tSuccess: %d", success);
+ if (success && reports != NULL) {
+ reports->num_resynced_lib_overrides++;
+ if (library_indirect_level > 0 &&
+ BLI_linklist_index(reports->libraries_recursive_linked, library) < 0) {
+ BLI_linklist_prepend(&reports->libraries_recursive_linked, library);
+ reports->num_resynced_lib_overrides_libraries++;
+ }
+ }
break;
}
FOREACH_MAIN_LISTBASE_ID_END;
diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h
index 4e12508ec8b..cca68b120e5 100644
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@ -104,11 +104,12 @@ typedef struct BlendFileReadReport {
* during this file read. */
int num_missing_libraries;
int num_missing_linked_id;
+ /* Number of root override IDs that were resynced. */
int num_resynced_lib_overrides;
/* Number of libraries which had overrides that needed to be resynced, and a single linked list
* of those. */
- int num_resynced_linked_lib_overrides;
+ int num_resynced_lib_overrides_libraries;
struct LinkNode *libraries_recursive_linked;
} BlendFileReadReport;
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index 6783f79ad87..2e261e6652a 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -822,23 +822,44 @@ bool WM_file_read(bContext *C, const char *filepath, ReportList *reports)
const int duration_lib_override_recursive_resync_minutes = (int)floor(
bf_reports.duration_lib_overrides_recursive_resync / 60.0);
- BKE_reportf(reports,
- RPT_INFO,
- "Blender file read in %d min %f sec (loading libraries: %d min %f sec, applying "
- "overrides: %d min %f sec, resyncing overrides: %d min %f sec, recursive resync "
- "of overrides: %d min %f sec)",
- duration_whole_minutes,
- bf_reports.duration_whole - (duration_whole_minutes * 60.0),
- duration_libraries_minutes,
- bf_reports.duration_libraries - (duration_libraries_minutes * 60.0),
- duration_lib_override_minutes,
- bf_reports.duration_lib_overrides - (duration_lib_override_minutes * 60.0),
- duration_lib_override_resync_minutes,
- bf_reports.duration_lib_overrides_resync -
- (duration_lib_override_resync_minutes * 60.0),
- duration_lib_override_recursive_resync_minutes,
- bf_reports.duration_lib_overrides_recursive_resync -
- (duration_lib_override_recursive_resync_minutes * 60.0));
+ BKE_reportf(
+ reports,
+ RPT_INFO,
+ "Blender file read in %d min %.2f sec (loading libraries: %d min %.2f sec, applying "
+ "overrides: %d min %.2f sec, resyncing overrides: %d min %.2f sec (%d root "
+ "overrides), among which recursive resync of overrides: %d min %.2f sec)",
+ duration_whole_minutes,
+ bf_reports.duration_whole - (duration_whole_minutes * 60.0),
+ duration_libraries_minutes,
+ bf_reports.duration_libraries - (duration_libraries_minutes * 60.0),
+ duration_lib_override_minutes,
+ bf_reports.duration_lib_overrides - (duration_lib_override_minutes * 60.0),
+ duration_lib_override_resync_minutes,
+ bf_reports.duration_lib_overrides_resync - (duration_lib_override_resync_minutes * 60.0),
+ bf_reports.num_resynced_lib_overrides,
+ duration_lib_override_recursive_resync_minutes,
+ bf_reports.duration_lib_overrides_recursive_resync -
+ (duration_lib_override_recursive_resync_minutes * 60.0));
+ if (bf_reports.num_resynced_lib_overrides_libraries != 0) {
+ for (LinkNode *node_lib = bf_reports.libraries_recursive_linked; node_lib != NULL;
+ node_lib = node_lib->next) {
+ Library *library = node_lib->link;
+ BKE_reportf(reports, RPT_INFO, "Library %s needs overrides resync.", library->filepath);
+ }
+ BKE_reportf(reports,
+ RPT_WARNING,
+ "%d libraries have overrides needing resync, this costed %d min %.2f seconds "
+ "of the total %d min %.2f sec file reading.",
+ bf_reports.num_resynced_lib_overrides_libraries,
+ duration_lib_override_recursive_resync_minutes,
+ bf_reports.duration_lib_overrides_recursive_resync -
+ (duration_lib_override_recursive_resync_minutes * 60.0),
+ duration_whole_minutes,
+ bf_reports.duration_whole - (duration_whole_minutes * 60.0));
+ }
+
+ BLI_linklist_free(bf_reports.libraries_recursive_linked, NULL);
+ bf_reports.libraries_recursive_linked = NULL;
success = true;
}
More information about the Bf-blender-cvs
mailing list