[Bf-blender-cvs] [39e0bbfa551] master: BKE libquery: Add option to also process `ID.lib` pointer.

Bastien Montagne noreply at git.blender.org
Mon Feb 6 17:58:51 CET 2023


Commit: 39e0bbfa5518bb2d9d2dcff8a9fa12483c66571f
Author: Bastien Montagne
Date:   Mon Feb 6 17:31:01 2023 +0100
Branches: master
https://developer.blender.org/rB39e0bbfa5518bb2d9d2dcff8a9fa12483c66571f

BKE libquery: Add option to also process `ID.lib` pointer.

This was never needed before, but upcomming work for Brush Asset project
requires it.

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

M	source/blender/blenkernel/BKE_lib_query.h
M	source/blender/blenkernel/intern/lib_query.c

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

diff --git a/source/blender/blenkernel/BKE_lib_query.h b/source/blender/blenkernel/BKE_lib_query.h
index 69e8f58178a..fc538cba221 100644
--- a/source/blender/blenkernel/BKE_lib_query.h
+++ b/source/blender/blenkernel/BKE_lib_query.h
@@ -142,6 +142,9 @@ enum {
   /** Also process internal ID pointers like `ID.newid` or `ID.orig_id`.
    *  WARNING: Dangerous, use with caution. */
   IDWALK_DO_INTERNAL_RUNTIME_POINTERS = (1 << 9),
+  /** Also process the ID.lib pointer. It is an option because this pointer can usually be fully
+     ignored. */
+  IDWALK_DO_LIBRARY_POINTER = (1 << 10),
 };
 
 typedef struct LibraryForeachIDData LibraryForeachIDData;
diff --git a/source/blender/blenkernel/intern/lib_query.c b/source/blender/blenkernel/intern/lib_query.c
index e655ae88c30..124ba21d406 100644
--- a/source/blender/blenkernel/intern/lib_query.c
+++ b/source/blender/blenkernel/intern/lib_query.c
@@ -294,8 +294,9 @@ static bool library_foreach_ID_link(Main *bmain,
       continue;
     }
 
-    /* NOTE: ID.lib pointer is purposefully fully ignored here...
-     * We may want to add it at some point? */
+    if (flag & IDWALK_DO_LIBRARY_POINTER) {
+      CALLBACK_INVOKE(id->lib, IDWALK_CB_NEVER_SELF);
+    }
 
     if (flag & IDWALK_DO_INTERNAL_RUNTIME_POINTERS) {
       CALLBACK_INVOKE_ID(id->newid, IDWALK_CB_INTERNAL);



More information about the Bf-blender-cvs mailing list