diff options
author | Bastien Montagne <bastien@blender.org> | 2022-02-03 19:51:56 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-02-03 19:51:56 +0300 |
commit | c8dee942be9aefd50ef9e3a3fc3572e914797d5c (patch) | |
tree | 7f294f69d1e1ec46b940d873a1c1f0a887e1c2e4 /source/blender/blenkernel/intern | |
parent | f59767ff97295404dade1bc0d494cfe81e8a97bb (diff) | |
parent | 71cd9f9fbb40e6e93e4cbf30184a96b90b772672 (diff) |
Merge branch 'blender-v3.1-release'
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/lib_override_proxy_conversion.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/lib_override_proxy_conversion.c b/source/blender/blenkernel/intern/lib_override_proxy_conversion.c index ed082b38247..a61f6d821df 100644 --- a/source/blender/blenkernel/intern/lib_override_proxy_conversion.c +++ b/source/blender/blenkernel/intern/lib_override_proxy_conversion.c @@ -25,6 +25,8 @@ #include "MEM_guardedalloc.h" +#include "BLI_linklist.h" + #include "DNA_ID.h" #include "DNA_collection_types.h" #include "DNA_object_types.h" @@ -122,23 +124,29 @@ static void lib_override_library_proxy_convert_do(Main *bmain, void BKE_lib_override_library_main_proxy_convert(Main *bmain, BlendFileReadReport *reports) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { + LinkNodePair proxy_objects = {NULL}; + FOREACH_SCENE_OBJECT_BEGIN (scene, object) { - if (object->proxy_group == NULL) { - continue; + if (object->proxy_group != NULL) { + BLI_linklist_append(&proxy_objects, object); } - - lib_override_library_proxy_convert_do(bmain, scene, object, reports); } FOREACH_SCENE_OBJECT_END; FOREACH_SCENE_OBJECT_BEGIN (scene, object) { - if (object->proxy == NULL) { - continue; + if (object->proxy != NULL && object->proxy_group == NULL) { + BLI_linklist_append(&proxy_objects, object); } - - lib_override_library_proxy_convert_do(bmain, scene, object, reports); } FOREACH_SCENE_OBJECT_END; + + for (LinkNode *proxy_object_iter = proxy_objects.list; proxy_object_iter != NULL; + proxy_object_iter = proxy_object_iter->next) { + Object *proxy_object = proxy_object_iter->link; + lib_override_library_proxy_convert_do(bmain, scene, proxy_object, reports); + } + + BLI_linklist_free(proxy_objects.list, NULL); } LISTBASE_FOREACH (Object *, object, &bmain->objects) { |