diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2021-08-26 16:45:00 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2021-08-31 16:20:02 +0300 |
commit | b18122451f8185ade9fc1e9aff5cc2f03d4fa040 (patch) | |
tree | d32ddbaca1c843dd4c123c2e652d89eaa3df49fe /source/blender/depsgraph/intern/builder/deg_builder_relations.cc | |
parent | 84f826ff2316de610a6545b27071b0fd6e67e16d (diff) |
Fix T88433: no greaspencil depsgraph evaluation with certain drivers
When the same stroke was used as a driver variable, this could make this
stroke already tagged as built in the course of building driver
variables (via `build_gpencil`), but then important stuff from
`build_object_data_geometry_datablock` could be missed later on (because
both of these funtions use `checkIsBuiltAndTag`). Most importantly,
setting up operations such as GEOMETRY_EVAL would be skipped entirely.
`build_object_data_geometry_datablock` seems to cover greasepencil just
fine (does the same as `build_gpencil` and more). Proposed solution is to
remove `build_gpencil` entirely. In `build_id` it would then also call
`build_object_data_geometry_datablock` for `ID_GD` IDs. Now the covered
types that _call_ `build_object_data_geometry_datablock` match exactly
to what is covered _inside_ `build_object_data_geometry_datablock`.
Think this "duplication" of functionality was just overseen in
rB66da2f537ae8 [`build_gpencil` existed long before and said commit made
greasepencil a real object with geometry and such].
thx @JacquesLucke for additional input!
Maniphest Tasks: T88433
Differential Revision: https://developer.blender.org/D12324
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations.cc')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index ab3081cb1ae..ef1db8be933 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -544,12 +544,13 @@ void DepsgraphRelationBuilder::build_id(ID *id) build_movieclip((MovieClip *)id); break; case ID_ME: - case ID_CU: case ID_MB: + case ID_CU: case ID_LT: case ID_HA: case ID_PT: case ID_VO: + case ID_GD: build_object_data_geometry_datablock(id); break; case ID_SPK: @@ -573,9 +574,6 @@ void DepsgraphRelationBuilder::build_id(ID *id) case ID_PA: build_particle_settings((ParticleSettings *)id); break; - case ID_GD: - build_gpencil((bGPdata *)id); - break; case ID_LI: case ID_IP: @@ -2609,18 +2607,6 @@ void DepsgraphRelationBuilder::build_image(Image *image) build_parameters(&image->id); } -void DepsgraphRelationBuilder::build_gpencil(bGPdata *gpd) -{ - if (built_map_.checkIsBuiltAndTag(gpd)) { - return; - } - /* animation */ - build_animdata(&gpd->id); - build_parameters(&gpd->id); - - // TODO: parent object (when that feature is implemented) -} - void DepsgraphRelationBuilder::build_cachefile(CacheFile *cache_file) { if (built_map_.checkIsBuiltAndTag(cache_file)) { |