Commit: 7b9595d366d0477431763ec0dc6f0f7d38cdcf99
Author: Joshua Leung
Date:   Wed Nov 8 13:22:25 2017 +1300
Branches: greasepencil-object
https://developer.blender.org/rB7b9595d366d0477431763ec0dc6f0f7d38cdcf99

Fix: Added some more tags/relations in depsgraph to fix crashes when Onion 
Skinning is enabled

* id_tag_update_object_data() - Added a case for the GP datablock type
  so that depsgraph tagging via the GPencil datablock's RNA properties
  works. Previously, only the object.data case (i.e. modifiers) was handled.
  This fixes a crash when enabling onion skinning, and a ghost can be shown
  on the neighbouring frames.

* DepsgraphRelationBuilder::build_obdata_geom() - Added a relation between
  timesource and GP geometry (i.e. where cache rebuild occurs). This fixes
  a crash after scrubbing the timeline when onion skinning is enabled
  (I'm guessing due to onion skinning suddenly getting re-shown, but the cache
  not doesn't contain this info due to the previously being updated for 
animation)

===================================================================

M       source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M       source/blender/depsgraph/intern/depsgraph_tag.cc

===================================================================

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc 
b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index e13b73ab566..bc02c0f69c1 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1722,6 +1722,14 @@ void DepsgraphRelationBuilder::build_obdata_geom(Main 
*bmain, Scene *scene, Obje
                
                case OB_GPENCIL: /* Grease Pencil */
                {
+                       /* Geometry cache needs to be recalculated on frame 
change
+                        * (e.g. to fix crashes after scrubbing the timeline 
when
+                        *  onion skinning is enabled, since the ghosts need to 
be
+                        *  re-added to the cache once scrubbing ends)
+                        */
+                       TimeSourceKey time_key;
+                       ComponentKey geometry_key(obdata, 
DEG_NODE_TYPE_GEOMETRY);
+                       add_relation(time_key, geometry_key, "GP Frame Change");
                        break;
                }
        }
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc 
b/source/blender/depsgraph/intern/depsgraph_tag.cc
index df618bd75bc..478f21966e0 100644
--- a/source/blender/depsgraph/intern/depsgraph_tag.cc
+++ b/source/blender/depsgraph/intern/depsgraph_tag.cc
@@ -184,6 +184,9 @@ void id_tag_update_object_data(Depsgraph *graph, IDDepsNode 
*id_node)
                case ID_LP:
                        data_comp = 
id_node->find_component(DEG_NODE_TYPE_PARAMETERS);
                        break;
+               case ID_GD:
+                       data_comp = 
id_node->find_component(DEG_NODE_TYPE_GEOMETRY);
+                       break;
                default:
                        break;
        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to