[Bf-blender-cvs] [8241678e6ec] blender-v2.93-release: LibOverride: more tweaking to handling of obsolete overrides during resync.

Bastien Montagne noreply at git.blender.org
Fri May 7 16:14:22 CEST 2021


Commit: 8241678e6ec6cd84f097d892a000cf214b218957
Author: Bastien Montagne
Date:   Fri May 7 16:07:37 2021 +0200
Branches: blender-v2.93-release
https://developer.blender.org/rB8241678e6ec6cd84f097d892a000cf214b218957

LibOverride: more tweaking to handling of obsolete overrides during resync.

this is a followup to rB2bd85d9cc623, we cannot forcefully delete
obsolete overrides of object data (meshes etc.), as this implies also
deleting their user object, which might still be a perfectly valid
override, albeit in conflict regarding its obdata ID pointer...

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

M	source/blender/blenkernel/intern/lib_override.c

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

diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index a6bb8684864..54d14e33209 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -907,7 +907,11 @@ bool BKE_lib_override_library_resync(Main *bmain,
      * override hierarchy anymore. This will ensure they get properly deleted at the end of this
      * function. */
     if (!ID_IS_LINKED(id) && ID_IS_OVERRIDE_LIBRARY_REAL(id) &&
-        (id->override_library->reference->tag & LIB_TAG_MISSING) != 0) {
+        (id->override_library->reference->tag & LIB_TAG_MISSING) != 0 &&
+        /* Unfortunately deleting obdata means deleting their objects too. Since there is no
+         * guarantee that a valid override object using an obsolete override obdata gets properly
+         * updated, we ignore those here for now. In practice this should not be a big issue. */
+        !OB_DATA_SUPPORT_ID(GS(id->name))) {
       id->tag |= LIB_TAG_MISSING;
     }



More information about the Bf-blender-cvs mailing list