[Bf-blender-cvs] [a54e17e52dc] master: LibQuery: Add option to NOT process embedded IDs.

Bastien Montagne noreply at git.blender.org
Wed Mar 11 17:27:03 CET 2020


Commit: a54e17e52dc1202df99951c9873fa9211b2ee07b
Author: Bastien Montagne
Date:   Wed Mar 11 17:25:31 2020 +0100
Branches: master
https://developer.blender.org/rBa54e17e52dc1202df99951c9873fa9211b2ee07b

LibQuery: Add option to NOT process embedded IDs.

Request from depsgraph department, which does basically consider those
embedded IDs as any other data-block (unlike any BKE ID management code).

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

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 5b4aa019441..845351f22fa 100644
--- a/source/blender/blenkernel/BKE_lib_query.h
+++ b/source/blender/blenkernel/BKE_lib_query.h
@@ -116,6 +116,8 @@ enum {
   IDWALK_READONLY = (1 << 0),
   IDWALK_RECURSE = (1 << 1),    /* Also implies IDWALK_READONLY. */
   IDWALK_INCLUDE_UI = (1 << 2), /* Include UI pointers (from WM and screens editors). */
+  /** Do not process ID pointers inside embedded IDs. Needed by depsgraph processing e.g. */
+  IDWALK_IGNORE_EMBEDDED_ID = (1 << 3),
 
   IDWALK_NO_INDIRECT_PROXY_DATA_USAGE = (1 << 8), /* Ugly special case :(((( */
 };
diff --git a/source/blender/blenkernel/intern/lib_query.c b/source/blender/blenkernel/intern/lib_query.c
index b022cc1720b..41d938e897d 100644
--- a/source/blender/blenkernel/intern/lib_query.c
+++ b/source/blender/blenkernel/intern/lib_query.c
@@ -534,7 +534,10 @@ static void library_foreach_ID_as_subdata_link(ID **id_pp,
   FOREACH_CALLBACK_INVOKE_ID_PP(data, id_pp, IDWALK_CB_EMBEDDED);
   BLI_assert(id == *id_pp);
 
-  if (flag & IDWALK_RECURSE) {
+  if (flag & IDWALK_IGNORE_EMBEDDED_ID) {
+    /* Do Nothing. */
+  }
+  else if (flag & IDWALK_RECURSE) {
     /* Defer handling into main loop, recursively calling BKE_library_foreach_ID_link in
      * IDWALK_RECURSE case is troublesome, see T49553. */
     /* XXX note that this breaks the 'owner id' thing now, we likely want to handle that



More information about the Bf-blender-cvs mailing list