4fe4a52cd78d0112008e5e5ff266b538be6a63b0
In particular, while Object (un)linking was already tagged in relevant BKE code, collection (un)linking was not in several cases. This was (partially) done by user code, though almost never for the whole hierarchy of parents. Technically, the tag is done as part of `collection_object_cache_free_parent_recursive`/`collection_object_cache_free`, since currently clearing this cache is done everytime to collection hierarchy or their content is modified. It also removes `collection_tag_update_parent_recursive`, which was already doing something similar, but was only called from code adding/removing objects to collections, and was walking the same parent hierarchy as `collection_object_cache_free_parent_recursive`. This commit implements the decision made in #116601, to tag modified data as close as possible from the code modifying it. --------------------- This has an impact on deg tagging, which takes over twice as much cycles with this commit compared to previous code when opening a Pets production file with several liboverrides (`deggraph_id_tag_update_single_flag` goes from less than 0.03% to over 0.06%). The overhead remains extremely low though, and is totally unmeasurable in global execution timing. Timing of the liboverride processing on opening the production file also did not show any measurable differences. Pull Request: https://projects.blender.org/blender/blender/pulls/116986
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
