Fix (unreported) missing 'need resync' detection in overrides of overrides.

In case the reference data of a liboverride is aslo a liboverride, and
is already tagged for resync, the override of the override also needs to
be resynced.

Note that linked overrides are guaranteed to be processed by apply code
(and hence get checked for needed resync) before the liboverrides using
them.
This commit is contained in:
Bastien Montagne 2023-08-04 17:54:07 +02:00
parent cc34a0ae2e
commit f32f775e5b
1 changed files with 15 additions and 1 deletions

View File

@ -1271,7 +1271,21 @@ static void rna_property_override_check_resync(Main *bmain,
if (ID_IS_LINKED(id_owner_src)) {
id_owner_src->lib->tag |= LIBRARY_TAG_RESYNC_REQUIRED;
}
CLOG_INFO(&LOG, 3, "Local override %s detected as needing resync", id_owner_dst->name);
CLOG_INFO(&LOG,
3,
"Local override %s detected as needing resync due to mismatch in its used IDs",
id_owner_dst->name);
}
if ((id_owner_src->override_library->reference->tag & LIB_TAG_LIBOVERRIDE_NEED_RESYNC) != 0) {
id_owner_dst->tag |= LIB_TAG_LIBOVERRIDE_NEED_RESYNC;
if (ID_IS_LINKED(id_owner_src)) {
id_owner_src->lib->tag |= LIBRARY_TAG_RESYNC_REQUIRED;
}
CLOG_INFO(&LOG,
3,
"Local override %s detected as needing resync as its liboverride reference is "
"already tagged for resync",
id_owner_dst->name);
}
}