Blender Git Commit Log

Git Commits -> Revision 31041d8

Revision 31041d8 by Sergey Sharybin (depsgraph_refactor)
December 8, 2014, 13:58 (GMT)
Depsgraph: Solution for missing update tag when adding new object

The issue was caused by new object add tagging object for recalc and tagging
relations for update. With new dependency graph it lead to situation when
ID tags are simply lost because of the whole graph being rebuilt.

The idea of this change is:

- Relations update tag doesn't destroy graph, it only stores flag in the
graph that it's relations need to be updated.

- ID tagging now stores an ID which is currently missing in the dependency
graph. Tag of those IDs would happen later after relations are all up to
date.

- Relations update reconstructs the graph and re-tags all the nodes which
were previously tagged for recalc.

This gives quite the same behavior that with old dependency graph, making
it possible to store recalc tags separately from the graph nodes themselves
in order to be able to invalidate graph without rebuilding it and still
have proper track for what's changed. This is a crucial thing to have in
order to have reasonable speed of python scripts.

Alternative to a separate storage in the Depsgraph would be to re-use
recalc flags stored in the ID itself.

There are probably some more tweaks to be done in this area, let's see
how this behaves for now.

P.S. This change also seems to solve issues with missing updates of the
armatures when exiting edit mode.

Commit Details:

Full Hash: 31041d86b7a4754ced3ededc28624844165687eb
Parent Commit: cc06c00
Lines Changed: +131, -22

6 Modified Paths:

/source/blender/blenkernel/intern/depsgraph.c (+28, -15) (Diff)
/source/blender/depsgraph/DEG_depsgraph_build.h (+8, -3) (Diff)
/source/blender/depsgraph/intern/depsgraph.cpp (+18, -0) (Diff)
/source/blender/depsgraph/intern/depsgraph.h (+15, -0) (Diff)
/source/blender/depsgraph/intern/depsgraph_build.cpp (+56, -1) (Diff)
/source/blender/depsgraph/intern/depsgraph_tag.cpp (+6, -3) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021