[Bf-blender-cvs] [a1397e48b95] master: Cleanup old special cases from some libquery callbacks.
Bastien Montagne
noreply at git.blender.org
Thu Feb 13 16:23:52 CET 2020
Commit: a1397e48b9529fe97c8801a07d0ce3daa3594f95
Author: Bastien Montagne
Date: Thu Feb 13 14:26:27 2020 +0100
Branches: master
https://developer.blender.org/rBa1397e48b9529fe97c8801a07d0ce3daa3594f95
Cleanup old special cases from some libquery callbacks.
We now have proper flagging for horrible loopback pointers...
===================================================================
M source/blender/blenloader/intern/readfile.c
M source/blender/python/intern/bpy_rna_id_collection.c
===================================================================
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index b06571e5f40..93352a1ec90 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7758,6 +7758,9 @@ static int lib_link_main_data_restore_cb(LibraryIDLinkCallbackData *cb_data)
if (GS((*id_pointer)->name) == ID_GR) {
Collection *collection = (Collection *)*id_pointer;
if (collection->flag & COLLECTION_IS_MASTER) {
+ /* We should never reach that point anymore, since master collection private ID should be
+ * properly tagged with IDWALK_CB_PRIVATE. */
+ BLI_assert(0);
return IDWALK_RET_NOP;
}
}
diff --git a/source/blender/python/intern/bpy_rna_id_collection.c b/source/blender/python/intern/bpy_rna_id_collection.c
index 6084f3f3ad9..ce47f5e4f65 100644
--- a/source/blender/python/intern/bpy_rna_id_collection.c
+++ b/source/blender/python/intern/bpy_rna_id_collection.c
@@ -84,11 +84,11 @@ static bool id_check_type(const ID *id, const BLI_bitmap *types_bitmap)
static int foreach_libblock_id_user_map_callback(LibraryIDLinkCallbackData *cb_data)
{
- IDUserMapData *data = cb_data->user_data;
- ID *self_id = cb_data->id_self;
ID **id_p = cb_data->id_pointer;
if (*id_p) {
+ IDUserMapData *data = cb_data->user_data;
+ const int cb_flag = cb_data->cb_flag;
if (data->types_bitmap) {
if (!id_check_type(*id_p, data->types_bitmap)) {
@@ -96,13 +96,8 @@ static int foreach_libblock_id_user_map_callback(LibraryIDLinkCallbackData *cb_d
}
}
- if ((GS(self_id->name) == ID_OB) && (id_p == (ID **)&((Object *)self_id)->proxy_from)) {
- /* We skip proxy_from here,
- * since it's some internal pointer which is not relevant info for py/API level. */
- return IDWALK_RET_NOP;
- }
- else if ((GS(self_id->name) == ID_KE) && (id_p == (ID **)&((Key *)self_id)->from)) {
- /* We skip from here,
+ if (cb_flag & IDWALK_CB_LOOPBACK) {
+ /* We skip loopback pointers like Object.proxy_from or Key.from here,
* since it's some internal pointer which is not relevant info for py/API level. */
return IDWALK_RET_NOP;
}
More information about the Bf-blender-cvs
mailing list