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).
This commit is contained in:
@@ -116,6 +116,8 @@ enum {
|
|||||||
IDWALK_READONLY = (1 << 0),
|
IDWALK_READONLY = (1 << 0),
|
||||||
IDWALK_RECURSE = (1 << 1), /* Also implies IDWALK_READONLY. */
|
IDWALK_RECURSE = (1 << 1), /* Also implies IDWALK_READONLY. */
|
||||||
IDWALK_INCLUDE_UI = (1 << 2), /* Include UI pointers (from WM and screens editors). */
|
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 :(((( */
|
IDWALK_NO_INDIRECT_PROXY_DATA_USAGE = (1 << 8), /* Ugly special case :(((( */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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);
|
FOREACH_CALLBACK_INVOKE_ID_PP(data, id_pp, IDWALK_CB_EMBEDDED);
|
||||||
BLI_assert(id == *id_pp);
|
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
|
/* Defer handling into main loop, recursively calling BKE_library_foreach_ID_link in
|
||||||
* IDWALK_RECURSE case is troublesome, see T49553. */
|
* IDWALK_RECURSE case is troublesome, see T49553. */
|
||||||
/* XXX note that this breaks the 'owner id' thing now, we likely want to handle that
|
/* XXX note that this breaks the 'owner id' thing now, we likely want to handle that
|
||||||
|
|||||||
Reference in New Issue
Block a user